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

걷기반 SQL - 8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.

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

30. doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!

SELECT name
FROM doctors
WHERE major = ‘성형외과’;

 

31. doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!

SELECT major, COUNT(*) AS doctor_count
FROM doctors
GROUP BY major;

 

32. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!

SELECT COUNT(*) AS doctor_count
FROM doctors
WHERE hire_date <= DATE_SUB(CURDATE(), INTERVAL 5 YEAR);

 

33. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!

SELECT name, SYSDATE - hire_date AS days_worked
FROM doctors;

 


풀이

32

INTERVAL 함수 : 날짜를 더하고 빼는 연산식

SELECT SYSDATE - (INTERVAL '2' YEAR) MINUS_YEAR
, SYSDATE + (INTERVAL '2' YEAR) ADD_YEAR
FROM DUAL
/*
SELECT COUNT(*)
FROM doctors
WHERE EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM hire_date) >= 5;
*/
--위 아래 같은 내용
SELECT COUNT(*) AS doctor_count
FROM doctors
WHERE hire_date <= DATE_SUB(CURDATE(), INTERVAL 5 YEAR);

 

 

 

INTERVAL 활용 방법

SYSDATE + (INTERVAL '1' YEAR) --1년 더하기
SYSDATE + (INTERVAL '1' MONTH) --1개월 더하기
SYSDATE + (INTERVAL '1' DAY) --1일 더하기
SYSDATE + (INTERVAL '1' HOUR) --1시간 더하기
SYSDATE + (INTERVAL '1' MINUTE) --1분 더하기
SYSDATE + (INTERVAL '1' SECOND) --1초 더하기
SYSDATE + (INTERVAL '02:10' HOUR TO MINUTE) --2시간10분 더하기
SYSDATE + (INTERVAL '01:30' MINUTE TO SECOND) --130초 더하기

 

현재 일시에서 2년 빼기



SELECT ‘current_time’ t
, SYSDATE dat
FROM dual
--현재일시
UNION ALL


SELECT ‘intrtval’,
SYSDATE - (INTERVAL ‘2’ YEAR)
FROM dual
--2년 빼기
UNION ALL


SELECT ‘add_months ()’
, ADD_MONTHS (SYSDATE, -24)
FROM dual
--24개월 빼기
UNION ALL


SELECT ‘sysdate day’
, SYSDATA - 730
FROM dual
--730일 빼기

 

출력

t dte
current_time 2024-10-21
intrtval 2022-10-21
add_months () 2022-10-21
sysdate day 2022-10-21

 

여러 테이블의 합집합 출력 (https://blog.naver.com/jeong2091/222816095789)

--컬럼명 Alias는 상위에 있는 쿼리만 먹음

UNION : 컬럼의 개수와 데이터 타입이 일치, 중복 데이터 제거, 많은 데이터 처리 시 느려짐

SELECT 컬럼1, 컬럼2

FROM 테이블1

UNION

SELECT 컬럼1, 컬럼2

FROM 테이블2

UNION ALL : 컬럼의 개수와 데이터 타입이 일치,

SELECT 컬럼1, 컬럼2

FROM 테이블1

UNION

SELECT 컬럼1, 컬럼2

FROM 테이블2

 


출처

32: https://gent.tistory.com/64, https://ws-pace.tistory.com/137