CODING TEST/MySQL

Lv1 - 12세 이하인 여자 환자 목록 출력하기

iamyuunzo 2025. 7. 16. 17:38

📌 문제 정보

- 문제 이름 : 프로그래머스 - (SELECT) 12세 이하인 여자 환자 목록 출력하기

- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/132201

 

 

 

📌 문제 요약

- PATIENT 테이블 : PT_NO(환자번호), PT_NAME(환자이름), GEND_CD(성별코드),  AGE(나이), TLNO(전화번호)

- PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성

- 이때 전화번호가 없는 경우, 'NONE'으로 출력, 결과는 나이를 기준으로 내림차순 정렬, 나이 같다면 환자이름을 기준으로 오름차순 정렬

 

예시)

PT_NO PT_NAME GEND_CD AGE TLNO
PT22000003 브라운 M 18 01031246641
PT22000004 크롱 M 7 NULL
PT22000006 뽀뽀 W 8 NULL
PT22000009 한나 W 12 01032323117
PT22000012 뿡뿡이 M 5 NULL
PT22000013 크리스 M 30 01059341192
PT22000014 토프 W 22 01039458213
PT22000018 안나 W 11 NULL
PT22000019 바라 W 10 01079068799
PT22000021 릴로 W 33 01023290767

 

출력)

PT_NAME PT_NO GEND_CD AGE TLNO
한나 PT22000009 W 12 01032323117
안나 PT22000018 W 11 NONE
바라 PT22000019 W 10 01079068799
뽀뽀 PT22000006 W 8 NONE

 

 

 

📌 내 풀이 및 코드

SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE GEND_CD = 'W' 
AND AGE <=12
ORDER BY AGE DESC, PT_NAME ASC;

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** COALESCE 문법 **

- SQL에서 NULL 값을 다른 값으로 대체할 때 사용하는 함수

# COALESCE 문법 : 왼쪽부터 차례대로 값 검사해서 NULL이 아닌 첫 번째 값 반환
COALESCE(VALUE1, VALUE2, VALUE3, ..., VALUE N)

# 예제 1 : 단순 사용
SELECT COALESCE(NULL, NULL, '대체값') AS 결과;			# 출력: 대체값

# 예제 2 : 테이블 컬럼에 적용
SELECT COALESCE(TLNO, 'NONE') AS TLNO FROM PATIENT;  	 # TLNO가 NULL이면 NONE출력, 값 있으면 원래대로 출력

 

- COALESCE vs IFNULL

함수  특징  예시
COALESCE 다수의 값 중 첫 번째 NOT NULL 반환 COALESCE(a, b, c)
IFNULL 두 개의 값만 처리 가능 (MySQL 전용) IFNULL(a, b) → a가 NULL이면 b