한 걸음씩

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

Programmers

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

winter17 2023. 2. 20. 22:41

https://school.programmers.co.kr/learn/courses/30/lessons/132201

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 정답 코드

SELECT PT_NAME, PT_NO, GEND_CD, AGE, 
	CASE 
    	WHEN TLNO IS NULL THEN 'NONE' 
        ELSE TLNO 
    END AS TLNO
FROM PATIENT
WHERE GEND_CD = 'W' AND AGE <= 12
ORDER BY AGE DESC, PT_NAME;

 

전체 코드 해석 ▼

PATIENT 테이블에서

GEND_CD 칼럼이 'w'이고 AGE 칼럼이 12 이하인 부분만

PT_NAME, PT_NO, GEND_CD, AGE, TLNO(case구문은 아래에서 해석)만 출력하는데

AGE칼럼은 내림차순으로 정렬하고 AGE칼럼이 동일할 경우 PT_NAME칼럼을 내림차순으로 정렬해 줘

 

 

 체크 포인트

CASE 
    	WHEN TLNO IS NULL THEN 'NONE' 
        ELSE TLNO 
    END AS TLNO

 

CASE 구문 코드 해석 ▼

TLNO 칼럼이 NULL이면 'NONE'으로 표시하고

아니라면 TLNO 칼럼 그대로 출력하는데

칼럼명은 TLNO로 

 

# CASE 사용법
CASE
	WHEN 조건1 THEN '반환 값1'
	WHEN 조건2 THEN '반환 값2'
	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END AS '칼럼에 표시할 별칭'
  • 조건1이 TRUE면 '반환 값 1'을 돌려주고
  • 조건 2가 TRUE면 '반환 값 2'를 돌려주고
  • 두 조건 FALSE면 ELSE 구문 실행
  • 만약에 ELSE 구문이 없다면 NULL 반환