DATA 사전캠프

11일차 SQL 스터디: LOL을 하다가 홧병이 나서 병원을 찾아왔습니다

sawo11 2024. 11. 18. 17:04

이제, 아래와 같은 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(major) doctor_count
FROM doctors
GROUP BY major;

 

32. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!

SELECT COUNT(*) doctor_count
FROM doctors
WHERE TIMESTAMPDIFF(YEAR, hire_date, CURDATE()) >= 5;

 

33. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!

SELECT name, 
       CONCAT( 
           TIMESTAMPDIFF(YEAR, hire_date, CURDATE()), '년 ',
           MOD(TIMESTAMPDIFF(MONTH, hire_date, CURDATE()), 12), '개월'
       ) work_duration
FROM doctors;

 

*CONCAT: 여러 문자열을 결합하여 하나의 문자열로 만드는 함수

*MOD: 나머지를 계산하는 함수