Q8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.
이제, 아래와 같은 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(*) FROM doctors group by major
32. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
더보기
SELECT COUNT(*) FROM doctors WHERE hire_date <= DATE_SUB(CURDATE(), INTERVAL 5 YEAR)
33. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
더보기
SELECT *, TIMESTAMPDIFF(YEAR, hire_date, CURDATE()) AS years_worked FROM doctors
핵심 개념 정리
🔹 32번 & 33번 쿼리에서 사용된 핵심 문법 정리
✅ 현재 날짜에서 특정 기간을 뺀 날짜 구하기
DATE_SUB(CURDATE(), INTERVAL N YEAR)
- 현재 날짜(CURDATE())에서 N년을 빼는 함수
- 예: DATE_SUB(CURDATE(), INTERVAL 5 YEAR) → 5년 전 날짜 반환
✅ 특정 날짜와 현재 날짜 간의 차이(년 단위) 계산
TIMESTAMPDIFF(YEAR, 시작날짜, 종료날짜)
- 두 날짜 간의 차이를 "년 단위"로 계산
- 예: TIMESTAMPDIFF(YEAR, hire_date, CURDATE()) → 의사의 근무 연수 반환
📌 TIMESTAMPDIFF vs DATEDIFF 차이점 비교
계산 단위 | 연(YEAR) 단위 | 일(DAY) 단위 |
반환 값 | 두 날짜 간의 차이를 "년 단위"로 계산 | 두 날짜 간의 차이를 "일 단위"로 계산 |
사용 예시 | 근무 연수 계산 | 근무 일수 계산 |
결과 예시 (2025-03-20 기준) | TIMESTAMPDIFF(YEAR, '2018-05-10', '2025-03-20') = 6 | DATEDIFF('2025-03-20', '2018-05-10') = 2506 |
🚀 연 단위 근무 기간이 필요한 경우 TIMESTAMPDIFF, 일 단위 근무 기간이 필요한 경우 DATEDIFF를 사용하면 된다.
'PM > SQL' 카테고리의 다른 글
[내일배움캠프 TIL] 사전캠프 11일차 SQL 기초(10) (1) | 2025.03.24 |
---|---|
[내일배움캠프 TIL] 사전캠프 10일차 SQL 기초(9) (0) | 2025.03.21 |
[내일배움캠프 TIL] 사전캠프 8일차 SQL 기초(7) (0) | 2025.03.19 |
[내일배움캠프 TIL] 사전캠프 7일차 SQL 기초(6) (0) | 2025.03.18 |
[내일배움캠프 TIL] 사전캠프 6일차 SQL 기초(5) (0) | 2025.03.17 |