본문 바로가기

SQL

SQL 문법 연습 - 8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.

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, 등)