자료구조 및 알고리즘/프로그래머스

프로그래머스 - 12세 이하인 여자 환자 목록 출력하기 (SQL)

viamemine 2024. 4. 16. 00:03
728x90
반응형

 


 

💬 내가 작성한 SQL 코드

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; 
# 전화번호 없으면 NONE 출력
# 나이 같다면 환자 이름 기준으로 오름차순

 

 

이번 문제는 조건이 조금 까다로웠다.

 

1. 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회

2. 이때 전화번호가 없는 경우, 'NONE'으로 출력

3. 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬

 

1. WHERE로 12세이하 AND 여자환자로 해결한다.

2. 처음에는 ifnull()으로 해결하려고 했는데, COALESCE()로 해결했다. 

3. ORDER BY 나이 DESC(내림차순), 환자이름 ASC(오름차순)으로 해결했다.

 

2번 조건만 까다로웠다 ! 

2번을 어떻게 해결할 것인지에 대한 문제로 간주된다.

 

COALESCE(A, B)라고 한다면

A 컬럼이 null 값이 아닌 경우 A 값을 return하고,

A 컬럼이 null이고 B가 null이 아닌경우 B 값을 return하고,

모든 인수가 null이면 NULL을 반환하는 함수이다.

 

COALESCE()를 기억하자 ! 

 

 

 

 

728x90