-- 연도와 개월을 같이 빼는 쿼리
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));
'SQL' 카테고리의 다른 글
[SQL 기초 연습] 10. 이젠 테이블이 2개입니다 (0) | 2025.01.16 |
---|---|
[SQL 기초 연습] 9. 아프면 안됩니다! 항상 건강 챙기세요! (0) | 2025.01.16 |
[SQL 기초 연습] 7. 랭크게임 하다가 싸워서 피드백 남겼어요 (0) | 2025.01.16 |
[SQL 기초 연습] 6. 팀 프로젝트 열심히 했으니 다시 놀아볼까요?! - LOL 유저 테이블 (0) | 2025.01.15 |
[SQL 기초 연습] 5. 공부하다보니 팀 프로젝트 시간이 왔어요! (0) | 2025.01.15 |