[TIL] sql 복습 및 스터디 아티클 진행

Jeong Min·2025년 5월 8일

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의 편한 해석을 위해서 갖춰야할 습관

  1. 예약어는 대문자로 EX) SELECT,FROM,AS 등등
  • 대문자로 예약어를 작성하면 코드 구분이 쉬워짐
  1. 행갈이를 정말 자주하기.
  • ,부터 AND, OR 등 조건이 붙을 때마다 행을 옮겨주기. 조건을 구분하기 쉬워짐
  1. 주석 작성하기
  • 코드의 의도를 주석으로 작성하기. ex) 성별이 여성인 경우
  1. alias 잘 쓰기
  • 한눈에 알아볼 수 있는 약어 등으로 사용

결국 같이 일하는 팀과의 합의된 규칙이 중요. 보편적이고 편리한 SQL 활용을 위한 적극적인 의사소통 필요

[인사이트]

SQL을 잘 활용하기 위해선 쉽게 해석할 수 있는 것이 첫 번째!

기존의 규칙이 있다면 존중하기

0개의 댓글