30) doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!
기존 답변
select name
from doctors
where major= '성형외과'
31)doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
기존 답변
select major
count(1) as '의사 수'
from doctors
group by 1
32)doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
기존 답변
select count(1) '5년 이상 근무 의사 수'
from doctors
where current_date - hire_date>=5
정석 답변
SELECT COUNT(*) AS num_of_doctors
FROM doctors
WHERE hire_date <= DATE_SUB(CURDATE(), INTERVAL 5 YEAR);
DATE_SUB(a,INTERVAL ?) = a의 기간에서 INTERVAL~ 만큼 빼주는 것. EX) 2025.01.01, INTERVAL 1 YEAR = 2024.01.01
33)doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
기존 답변
select *,
current_date - hire_date as '근무 기간'
from doctors
정석 답변
select *
datediff(CURRENT_DATE, hire_date) as '근무 기간'
from doctors
DATEDIFF(a,b) = a와 b 날짜 간의 일 수 차이 계산.
34)patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!
select gender,
count(1) as '환자 수'
from patients
group by gender
35)patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!
selcet
from
where date_sub(curdate(),birth_date)>= interval 40 year
DATE_SUB(A,INTERVAL) 기억하기
birth_date <= date_sub(curdate(), INTERVAL 40 YEAR)
생일보다 오늘-40년이 크거나 같아야 40세 이상
36)patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!
select *
from patients
where datediff(curdate(),last_visit_date)>=365
37)patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!
select count(1) as '80년대생'
from patients
where substr(birth_date,1,4) between 1980 and 1989
LEFT JOIN, INNER JOIN 차이점 확실히 알고 복습하기!
아티클 스터디
https://yozm.wishket.com/magazine/detail/1519/
[주제]
SQL의 가독성을 높이는 습관
[아티클 요약]
SQL의 편한 해석을 위해서 갖춰야할 습관
결국 같이 일하는 팀과의 합의된 규칙이 중요. 보편적이고 편리한 SQL 활용을 위한 적극적인 의사소통 필요
[인사이트]
SQL을 잘 활용하기 위해선 쉽게 해석할 수 있는 것이 첫 번째!
기존의 규칙이 있다면 존중하기