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에 비교하면 현재 진행 중인 프로젝트를 선택할 수 있습니다.