본문 바로가기

사전캠프 퀘스트

8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.

이제, 아래와 같은 doctors(의사) 테이블이 있습니다.

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(*) AS "의사 수" FROM doctors GROUP BY major; 
  3. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
    • SELECT count(*) AS "의사 수" FROM doctors WHERE datediff(now(), hire_date) >= 5 * 365 + 1;
    • # MySQL에서 DATEDIFF는 다른 SQL과 다르게 첫번째 인수를 받지 않고 일수의 차이를 계산하기때문에 5년을 5*365로 계산하였다. (4 년에 한번 윤달을 고려하여 1을 추가하였다.)
  4. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
    • SELECT name, datediff(now(), hire_date) AS "근무 일" FROM doctors;