[프로그래머스] SQL 문제 - 12세 이하인 여자 환자 목록 출력하기

2025. 2. 17. 13:07SQL 알고리즘

728x90

SQL: 어린이 여성 환자 정보 조회하기

📌 문제 상황

병원 데이터베이스에서 12세 이하의 여성 환자 정보를 조회하는 SQL 쿼리를 작성해야 합니다. 또한, 전화번호가 없는 경우에는 'NONE'으로 표시하고, 환자 정보를 나이 내림차순(큰 나이 → 작은 나이), 같은 나이일 경우 이름 오름차순(가나다 순) 으로 정렬해야 합니다.


🔍 SQL 쿼리 분석

SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') as TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = "W"
ORDER BY AGE DESC, PT_NAME;

✅ SELECT 절

SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') as TLNO
  • PT_NAME : 환자 이름
  • PT_NO : 환자 번호
  • GEND_CD : 성별 코드
  • AGE : 나이
  • IFNULL(TLNO, 'NONE') AS TLNO : 전화번호가 NULL이면 'NONE'으로 출력

✅ FROM 절

FROM PATIENT
  • PATIENT 테이블에서 데이터를 가져옵니다.

✅ WHERE 절 (조건 설정)

WHERE AGE <= 12 AND GEND_CD = "W"
  • 나이가 12세 이하 (AGE <= 12)
  • 성별 코드가 여성 (GEND_CD = "W")

✅ ORDER BY 절 (정렬 기준)

ORDER BY AGE DESC, PT_NAME
  • 나이를 내림차순 (AGE DESC) → 나이가 많은 어린이부터 정렬
  • 같은 나이라면 이름을 오름차순 (PT_NAME ASC) → 가나다 순 정렬

💡 IFNULL(TLNO, 'NONE')의 의미

환자의 전화번호(TLNO)가 없는 경우, NULL 대신 'NONE'으로 표시하는 기능을 합니다.

IFNULL(TLNO, 'NONE') AS TLNO

즉, TLNO 값이 **NULL이면 'NONE'**을 반환하고, 그렇지 않으면 원래의 값을 반환합니다.

🔹 예제 데이터

PT_NAME PT_NO GEND_CD AGE TLNO

김유리 P1001 W 10 010-1234-5678
박소정 P1002 W 8 NULL
이지연 P1003 W 12 010-5678-1234
최민아 P1004 W 12 NULL

🔹 실행 결과

PT_NAME PT_NO GEND_CD AGE TLNO

이지연 P1003 W 12 010-5678-1234
최민아 P1004 W 12 NONE
김유리 P1001 W 10 010-1234-5678
박소정 P1002 W 8 NONE

🎯 정리

  • 12세 이하의 여성 환자를 조회
  • 전화번호가 없으면 'NONE'으로 표시
  • 나이 내림차순 → 같은 나이면 이름 오름차순 정렬
728x90