IT공부/SQL
[스파르타 사전캠프] SQL 걷기반 문제5
Johnnnn
2025. 2. 4. 18:02
728x90
5) 공부하다보니 팀 프로젝트 시간이 왔어요!
공부를 한 결과를 점검하기 위해 팀 프로젝트를 수행해야 합니다! 이제, 아래와 같은 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’ 조건을 사용하지 말고 쿼리를 작성해주세요!
*GPT 참고*
select * from team_projects where year (start_date) = 2022;
//YEAR() 함수를 사용하면 날짜에서 연도를 추출할 수 있음
// where start_date BETWEEN '2022-01-01' AND '2022-12-31'; 이렇게 작성도 가능함
19.
team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!
*GPT 참고*
select * from team_projects where start_date <= CURDATE() AND end_date >= CURDATE();
CURDATE()는 현재 날짜(시간 제외)를 반환하는 함수입니다.
만약 시간까지 포함하여 비교하고 싶다면 NOW() 함수를 사용할 수 있습니다.
- start_date <= CURDATE(): 프로젝트가 현재 날짜 이전 또는 오늘 시작된 프로젝트.
- end_date >= CURDATE(): 프로젝트가 현재 날짜 이후 또는 오늘 종료되지 않은 프로젝트.
- SELECT *: 조건을 만족하는 모든 컬럼을 반환.
20.
team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!
*GPT 참고*
select name, DATEDIFF(end_date, start_date) AS duration_days FROM team_projects;
- start_date <= CURDATE(): 프로젝트의 시작일이 현재 날짜보다 이전이거나 현재 날짜인 프로젝트를 선택합니다.
- end_date >= CURDATE(): 프로젝트의 종료일이 현재 날짜보다 이후이거나 현재 날짜인 프로젝트를 선택합니다.
- SELECT *: 조건에 맞는 프로젝트의 모든 컬럼을 반환합니다.
이 쿼리는 현재 진행 중인 프로젝트만 선택합니다. 즉, 오늘 날짜가 프로젝트의 시작일과 종료일 사이에 포함되는 프로젝트들을 반환합니다.
결론: CURDATE()를 사용하여 현재 날짜를 동적으로 계산하고, 이를 start_date와 end_date에 비교하면 현재 진행 중인 프로젝트를 선택할 수 있습니다.