PM/SQL

[내일배움캠프 TIL] 사전캠프 6일차 SQL 기초(5)

alstj0506 2025. 3. 17. 15:46

 

Q5) 공부하다보니 팀 프로젝트 시간이 왔어요! 

 

공부를 한 결과를 점검하기 위해 팀 프로젝트를 수행해야 합니다! 이제, 아래와 같은 team_projects(프로젝트) 테이블이 있습니다.
id
name
start_date
end_date
aws_cost
1
일조
2023-01-01
2023-01-07
30000
2
꿈꾸는이조
2023-03-15
2023-03-22
50000
3
보람삼조
2023-11-20
2023-11-30
80000
4
사조참치
2022-07-01
2022-07-30
75000

17. team_projects AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요!

더보기
SELECT name from team_projects WHERE aws_cost >= 40000
18. team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요! 단, start_date < ‘2023-01-01’ 조건을 사용하지 말고 쿼리를 작성해주세요!
더보기
SELECT * from team_projects WHERE YEAR(start_date) = 2022
 
19. team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!
더보기
SELECT * from team_projects WHERE CURDATE() BETWEEN start_date AND end_date
20. team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!
더보기

SELECT *, DATEDIFF(end_date, start_date) AS duration_days from team_projects 

정답) SELECT name, DATEDIFF(end_date, start_date) AS working_days FROM team_projects;

  • 정답 쿼리는 간결하게 name만 출력 → 필요한 정보만 보고 싶을 때 적합
  • 내가 작성한 쿼리는 id, start_date, end_date, aws_cost도 출력 → 추가적인 프로젝트 정보를 함께 보고 싶을 때 유용

핵심 개념 정리 



연도 추출 

SELECT * FROM (데이터베이스/테이블) WHERE YEAR(컬럼명) = "2021"

CURDATE(): 현재 날짜를 반환

CURTIME(): 현재 시간을 반환

NOW(): 현재 날짜와 시간 정보를 반환

SELECT * FROM 주문 WHERE YEAR(주문일) = YEAR(CURDATE());


DATEDIFF

- MySQL 에서 날짜 차이를 구하기 위해 DATEDIFF, TIMESTAMPDIFF 함수를 사용

- 간단하게 일(day) 차이를 구할 때는 DATEDIFF 함수를 사용

- 이외에 연(year), 월(month), 시간(hour), 초(second) 등을 지정하여 구할 때는 TIMESTAMPDIFF 함수를 사용

- 기본적으로 날짜1 - 날짜2 로 계산

DATEDIFF(날짜1, 날짜2)