PM/SQL

[내일배움캠프 TIL] 사전캠프 10일차 SQL 기초(9)

alstj0506 2025. 3. 21. 14:29

Q9) 아프면 안됩니다! 항상 건강 챙기세요!


의사가 있으면 당연히 의사에게 진료받는 환자가 있겠죠? 아래와 같은 patients(환자) 테이블이 있습니다.
id
name
birth_date
gender
last_visit_date
1
르탄이
1985-04-12
남자
2023-03-15
2
배캠이
1990-08-05
여자
2023-03-20
3
구구이
1982-12-02
여자
2023-02-18
4
이션이
1999-03-02
남자
2023-03-17

34. patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!
더보기
SELECT gender, COUNT(*) FROM patients GROUP BY gender
35. patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!
더보기
SELECT COUNT(*) FROM patients WHERE birth_date <= DATE_SUB(CURDATE(), INTERVAL 40 YEAR)
36. patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!
더보기
SELECT * FROM patients WHERE last_visit_date <= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
37. patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!
더보기
SELECT COUNT(*) FROM patients WHERE birth_date LIKE '198%'
 

핵심 개념 정리 

 

🔹 35번 & 36번 쿼리에서 사용된 핵심 문법 정리

현재 나이가 40세 이상인 환자 수 계산

WHERE birth_date <= DATE_SUB(CURDATE(), INTERVAL 40 YEAR)

 

 마지막 방문 날짜가 1년 이상 된 환자 선택

WHERE last_visit_date <= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
  • CURDATE(): 현재 날짜를 반환
  • DATE_SUB(date, INTERVAL expr unit): 지정된 날짜에서 주어진 간격만큼 빼는 함수
  • WHERE birth_date <= DATE_SUB(CURDATE(), INTERVAL 40 YEAR): 현재 날짜에서 40년을 빼고, birth_date가 그 날짜보다 이전인 환자들을 선택합니다. 이를 통해 40세 이상인 환자를 찾습니다.
  • WHERE last_visit_date <= DATE_SUB(CURDATE(), INTERVAL 1 YEAR): last_visit_date가 현재 날짜에서 1년을 뺀 날짜 이전인 환자들을 선택합니다.