SQL
SQL 문법 연습 - 8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.
김예나
2024. 12. 7. 21:15
id | name | major | hire_date |
1 | 르탄이 | 피부과 | 2018-05-10 |
2 | 배캠이 | 성형외과 | 2019-06-15 |
3 | 구구이 | 안과 | 2020-07-20 |
1. doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!
select name
from doctors
where major = '성형외과'
2. doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
select major, count(*)
from doctors
group by major
3. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
select count(*)
from doctors
where hire_date <= date_sub(curdate(), interval 5 year)
#timestampdiff는 두번째 매개변수에서 첫번째를 뺌, 나머지 diff는 반대
select count(*)
from doctors
where 5 <= timestampdiff(year, hire_date, curdate())
4. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
select name, datediff(curdate(), hire_date) as date_period
from doctors
배운 것
- TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
- unit: 계산 단위 (YEAR, MONTH, DAY, 등)
- datetime_expr1: 시작 날짜/시간
- datetime_expr2: 종료 날짜/시간
- 두번째에서 첫번째 매개변수를 뺌
- datediff(datetime_expr1, datetime_expr2)
- 첫번째에서 두번째 매개변수를 뺌
- date_sub(curdate(), interval 5 year)
- date: 기준 날짜
- INTERVAL expr unit: 빼고자 하는 기간을 표현
- expr: 숫자 (빼고자 하는 값)
- unit: 기간 단위 (예: DAY, MONTH, YEAR, HOUR, 등)