[프로그래머스] SQL 문제 - 12세 이하인 여자 환자 목록 출력하기
2025. 2. 17. 13:07ㆍSQL 알고리즘
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
'SQL 알고리즘' 카테고리의 다른 글
| [프로그래머스] 조건에 맞는 아이템들의 가격의 총합 구하기 SQL (5) | 2025.02.19 |
|---|---|
| [프로그래머스] 최댓값 구하기 SQL (2) | 2025.02.19 |
| [프로그래머스] 가장 비싼 상품 구하기 SQL (1) | 2025.02.19 |
| [프로그래머스] 3월에 태어난 여성 회원 목록 출력하기 - MySQL (5) | 2025.02.17 |
| [SQL] ORDER BY로 데이터 정렬하기 – 내림차순 & 오름차순 정리 (0) | 2025.02.15 |