[사전캠프] SQL 연습문제 - 5

2024. 8. 20. 20:01내일배움캠프

문제 : 아래의 테이블을 참고해 문제 해결을 위한 SQL 문을 작성하자.

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

[team_projects(프로젝트) 테이블]

Q1. AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리 작성

SELECT name
FROM team_projects
WHERE aws_cost >= 40000

 

'team_projects' 테이블에서 'aws_cost' 가 40000 이상인 레코드들에서  'name' 컬럼을 조회환 결과를 출력하는 쿼리를 작성하였다.

 

Q2. 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성, 단 'start_date < 2023-01-01' 조건을 사용하지 않을 것!

SELECT *
FROM team_projects
WHERE start_date LIKE '%2022-%'

 

조건에 비교연사자를 통한 조건식을 사용하지 않길 원하고 있어 LIKE 를 사용해 'start_date' 컬럼에서 '2022-' 문자를 포함하고 있는 값을 가진 레코드를 선택해 조회할 수 있는 쿼리를 작성하였다.

 

Q3. 현재 진행중인 프로젝트를 선택하는 쿼리를 작성, 단 현재 시점의 날짜를 하드코딩해서 쿼리하지 말것!

SELECT *
FROM team_projects
WHERE end_date > NOW()

 

제대로 문제를 이해했는지 모르겠지만 날짜 하드코딩(?)은 아마 CONCAT 등을 사용해 현재 날짜를 직접 입력하는 것을 말하는 것 같아 나의 경우 'NOW' 와 비교연산자를 사용하였다. 'end_date' 자체는 DATE 를 다루니 'CURRENT_DATE' 를 사용해도 될 것 같다.

 

Q4. 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리 작성

SELECT id, name, DATEDIFF(end_date, start_date) '진행기간'
FROM team_projects

 

DATEDIFF 를 사용해 날짜의 차이 일수를 연산하여 '진행기간' 이란 컬럼에 값을 출력하는 쿼리를 작성했다.