본문 바로가기
SQL

[SQL 기초 연습] 8. LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.

by wooksss 2025. 1. 16.
-- 연도와 개월을 같이 빼는 쿼리
SELECT DATE_SUB(CURDATE(), INTERVAL 2 YEAR + INTERVAL 3 MONTH);

-- 두 날짜의 차이 계산에도 사용 가능
SELECT DATEDIFF(NOW(), DATE_SUB(CURDATE(), INTERVAL 5 YEAR));​
이제, 아래와 같은 doctors(의사) 테이블이 있습니다.
id
name
major
hire_date
1
르탄이
피부과
2018-05-10
2
배캠이
성형외과
2019-06-15
3
구구이
안과
2020-07-20
30.
doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!

    > SELECT name FROM doctors WHERE major = '성형외과';

31.
doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
    > SELECT major, COUNT(*) AS count FROM doctors GROUP BY major;
32.
doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!

    > SELECT COUNT(*) AS count_over_5years FROM doctors WHERE YEAR(now()) - YEAR(hire_date) >= 5;

    > SELECT COUNT(*) AS num_of_doctors FROM doctors

       WHERE hire_date <= DATE_SUB(CURDATE(), INTERVAL 5 YEAR);

33.
doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
    > SELECT name, DATEDIFF(CURDATE(),hire_date) AS work_days FROM doctors;
 
 
-- 32번의 경우 YEAR()를 사용해서 연도를 추출해서 연산하였는데 DATE_SUB()를 사용하는 방법이 있었다.
-- DATE_SUB()는 지정 날짜에서 특정 간격을 빼는 함수이다
-- INTERVAL 5 YEAR는 간격을 나타내는 단위이다. 
-- 날짜 관련 함수는 익숙하지 않으면 사용하지 않게 되는 것 같다. 자주 사용해서 익숙하게 만들 필요 있음.
 
 

INTERVAL 지원되는 단위 (Interval Units)

YEAR 연 단위 (년)
MONTH 월 단위 (달)
DAY 일 단위 (날)
HOUR 시간 단위
MINUTE 분 단위
SECOND 초 단위
YEAR_MONTH 년-월 복합 단위
DAY_HOUR 일-시간 복합 단위
-- 연도와 개월을 같이 빼는 쿼리
SELECT DATE_SUB(CURDATE(), INTERVAL 2 YEAR + INTERVAL 3 MONTH);

-- 두 날짜의 차이 계산에도 사용 가능
SELECT DATEDIFF(NOW(), DATE_SUB(CURDATE(), INTERVAL 5 YEAR));