본문 바로가기
Coding Test/Programmers

[Programmers / MySQL] 12세 이하인 여자 환자 목록 출력하기 (Level 1)

by ngool 2024. 9. 2.

📌 문제

문제 설명

다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.

문제

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.


📌 나의 풀이

Code

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 ASC;

Solution

1. AGE가 12보다 작거나 같고, GEND_CD가 'W'인 행만 필터링

 

2. AGE 컬럼 기준으로 내림차순 정렬, AGE가 같다면 PT_NAME 컬럼 기준으로 오름차순 정렬

 

3. PT_NAME, PT_NO, GEND_CD, AGE, TLNO 컬럼을 출력하되, TLNO 컬럼에서 값이 비어있는 경우 'NONE'으로 대체하여 출력

  • IFNULL 함수 사용하여 TLNO 컬럼 값이 NULL인 경우 'NONE' 반환

배운 내용

1. IFNULL과 NULLIF 헷갈리지 않기

IFNULL을 사용해야하는 상황에 실수로 NULLIF를 사용하여 문제를 틀렸습니다.

이름이 비슷한 두 함수가 아직 헷갈리는 것 같아요..

  • IFNULL : 첫 번째 인자가 'NULL'인 경우, 두 번째 인자 반환. 첫 번째 인자가 'NULL'이 아닌 경우, 첫 번째 인자 그대로 반환.
  • NULLIF : 두 인자가 같으면 'NULL' 반환. 다르면 첫 번째 인자 반환.

 

IFNULL과 NULLIF의 차이에 대해 더 자세한 내용이 궁금하시다면 아래 포스팅 참고해주세요!

[MySQL] IFNULL과 NULLIF의 차이

 

[MySQL] IFNULL과 NULLIF의 차이

본 포스트는 헷갈리기 쉬운 SQL 함수인 IFNULL과 NULLIF의 기능에 대해 정리한 것입니다. 제가 자주 헷갈리는 개념인데요, 오늘부터는 헷갈리지 않으리라.. 다짐하는 마음에서 포스팅해봅니다.IFNULL

joungnx123.tistory.com