💻 CASE 먼저 살펴보기
CASE 구문은 <IF>, <SWITCH>의 같다.
<조건식1>을 충족하면 A, <조건식2>를 충족하면 B, 그렇지 않으면 C를 출력하는 구문이다.
-- (컬럼명) 내에 조건식1을 충족하면 A, 조건식2를 충족하면 B, 모두 충족하지 않으면 C가 출력된다.
select
case
when (조건식1) then A
when (조건식2) then B
else C
end as (컬럼명)
CASE 구문은 SELECT뿐만 아니라 WHERE, GROUP BY, HAVING 등에서도 쓰여 분기를 지정할 수 있다.
-- number 값에 따라 classA/B/F가 나뉨
select ...
from Table A
where
case
when A.number = 1 then classA
when A.number = 2 then classB
else classF
end
💻 문제 주소 : https://school.programmers.co.kr/learn/courses/30/lessons/132201
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💻 문제 설명
다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.
Column name | Type | Nullable |
PT_NO | VARCHAR(10) | FALSE |
PT_NAME | VARCHAR(20) | FALSE |
GEND_CD | VARCHAR(1) | FALSE |
AGE | INTEGER | FALSE |
TLNO | VARCHAR(50) | TRUE |
💻 문제
PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.
💻 코드 및 풀이
select PT_NAME, PT_NO, GEND_CD, AGE,
-- TLNO가 없으면 'NONE' 출력, 있으면 TLNO 출력
case
when tlno is null then 'NONE'
else tlno
end TLNO
from patient
where age <= 12 and gend_cd = 'W'
order by age desc, pt_name
위 문제 중 CASE와 관련된 조건은 아래와 같다.
1️⃣ 전화번호가 없으면 NONE, 그 외에는 TLNO 출력
위 문장을 영어로 그대로 쓰면 어떻게 될까? 'If there's no TLNO, then print 'NONE'. If there is, then print TLNO'를 유추했다면 이제 이를 그대로 쿼리로 쓰면 된다.
- If there's no TLNO > Case when TLNO is null
- then print 'NONE' > then 'NONE'
- If there is > else
- then print TLNO > else TLNO
- end TLNO * 이건 컬럼명을 정하기 위해 쓴 것
SQL은 생각보다 우리가 말하는 그대로 옮기면 생각보다 쉽게 쿼리를 짤 수 있다. 위 CASE 외에도 여러 조건이 있긴 하지만 이 부분 외에는 크게 어려운 부분이 없으니 넘기도록 하자.
'SQL > Programmers' 카테고리의 다른 글
[프로그래머스][SQL-SELECT] 모든 레코드 조회하기 (0) | 2023.07.04 |
---|---|
[프로그래머스][SQL-SELECT] 인기있는 아이스크림 (0) | 2023.07.04 |
[프로그래머스][SQL-SELECT] (USING, ON 차이) 과일로 만든 아이스크림 고르기 (0) | 2023.07.04 |
[프로그래머스][SQL-SELECT] 평균 일일 대여 요금 구하기 (0) | 2023.07.03 |
[프로그래머스][SQL-SELECT] 조건에 맞는 도서 리스트 출력하기 (1) | 2023.07.03 |