본문 바로가기
내일배움 과제/기타 과제

걷기반 SQL - 5) 공부하다보니 팀 프로젝트 시간이 왔어요!

by GREEN나무 2024. 10. 17.
728x90

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 name FROM team_projects
WHERE EXTRACT(YEAR FROM start_date) = 2022;

19. team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. , 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!

SELECT * FROM team_projects
WHERE end_date IS NULL OR end_date > CURRENT_DATE;

20. team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!

SELECT name,
DATEDIFF(DAY, start_date, end_date) AS day
FROM team_projects;

 


풀이

 

18

EXTRACT 함수 : 날짜 유형의 데이터로부터 날짜 정보를 분리하여 새로운 컬럼의 형태로 추출해 주는 함수입니다.

SELECT EXTRACT('날짜요소' from 컬럼1) as 별칭 from 테이블A;

SELECT systimestamp,
EXTRACT (YEAR FROM systimestamp) as year,
EXTRACT (MONTH FROM systimestamp) as month,
EXTRACT (DAY FROM systimestamp) as day,
EXTRACT (HOUR FROM systimestamp) as hour,
EXTRACT (MINUTE FROM systimestamp) as minute,
EXTRACT (SECOND FROM systimestamp) as second
EXTRACT dual;
--시스템 현재시각(SYSTIMESTAMP)에서 연도, , 날짜, 시간, , 초 추출하기

 

19

1) CURRENT_DATE : 현재의 세션(session) 날짜 및 시간을 반환하는 날짜 함수입니다.

SELECT CURRENT_DATE FROM dual;

session 은 현재의 사용자가 접속 후 접속을 종료할 때까지

dual 은 문법을 맞춰주기 위한 더미 테이블 (가짜 테이블)

 

2) SYSDATE 함수 : 현재의 데이터베이스 서버 날짜 및 시간을 반환하는 날짜 함수입니다.

SELECT SYSDATE FROM dual;

 

20

날짜차이, 시간차이 계산 : DATEDIFF

DATEPART는 약어를 사용해도 동일한 결과가 반환됩니다

 

1) 날짜 차이

SELECT DATEDIFF(DAY, '2021-06-12', '2021-07-13') AS day
, DATEDIFF(MONTH, '2021-06-12', '2021-07-13') AS month
, DATEDIFF(YEAR, '2021-06-12', '2021-07-13') AS year
SELECT DATEDIFF(DD, '2021-06-12', '2021-07-13') AS day
, DATEDIFF(MM, '2021-06-12', '2021-07-13') AS year
, DATEDIFF(YY, '2021-06-12', '2021-07-13') AS year
.

 

2) 시간 차이

SELECT DATEDIFF(HOUR, '2021-07-13 19:10:00', '2021-07-13 20:20:00') AS hours
, DATEDIFF(MINUTE, '2021-07-13 19:10:00', '2021-07-13 20:20:00') AS minute
, DATEDIFF(SECOND, '2021-07-13 19:10:00', '2021-07-13 20:20:00') AS second
SELECT DATEDIFF(HH, '2021-07-13 19:10:00', '2021-07-13 20:20:00') AS hours
, DATEDIFF(MINUTE, '2021-07-13 19:10:00', '2021-07-13 20:20:00') AS minute
, DATEDIFF(SECOND, '2021-07-13 19:10:00', '2021-07-13 20:20:00') AS second

 

 


출처

18: https://m.blog.naver.com/regenesis90/222226229952

19: https://1day1code.tistory.com/entry/SQL-%EB%82%A0%EC%A7%9C-%ED%95%A8%EC%88%98-sysdate-currentdate-%EB%82%A0%EC%A7%9C-%ED%91%9C%EC%8B%9C-%ED%98%95%EC%8B%9D-%EB%B3%80%EA%B2%BD

 

20: https://gent.tistory.com/430