문제 (11) - 조건식
책에 있는 2개의 실습문제와 프로그래머스 SQL 코딩테스트의 1문제로 조건식을 실습해보자..!
실습 11-1.
Searched Case 표현식으로 동일한 결과를 얻을 수 있도록, Simple Case 표현식을 사용하는 다음 쿼리를 다시 작성해라. 최대한
WHEN
절을 적게 사용해라.SELECT name, CASE name WHEN 'English' THEN 'latin1' WHEN 'English' THEN 'latin1' WHEN 'Italian' THEN 'latin1' WHEN 'French' THEN 'latin1' WHEN 'German' THEN 'latin1' WHEN 'Japanese' THEN 'uft8' WHEN 'Mandarin' THEN 'uft8' ELSE 'Unknown' END FROM language;
- 제시된 쿼리는 Simple case 표현식이다. 이걸 Searched Case 표현식으로 바꿔야 한다.
-
IN
을 사용하는게 핵심이었다.
풀이
SELECT name,
CASE
WHEN name IN ('English', 'Italian', 'French', 'German')
THEN 'latin1'
WHEN name IN ('Japanese', 'Mandarin')
THEN 'uft8'
ELSE 'Unknown'
END 종류
FROM language;
실습 11-2.
5개의 열(각 등급별로 하나씩)이 있는 하나의 행을 결과셋에 표시하도록 다음 쿼리를 다시 작성해라. 이때 5개의 열 이름을 G, PG, PG_13, R, NC_17로 지정해라.
SELECT rating, count(*) FROM film GROUP BY rating ; +--------+----------+ | rating | count(*) | +--------+----------+ | PG | 194 | | G | 178 | | NC-17 | 210 | | PG-13 | 223 | | R | 195 | +--------+----------+ 5 rows in set (0.00 sec)
- 각 등급에 포함되어 있는 문자열이 있는지를 1(
true=1
)로 두고, 이걸SUM
해주는게 핵심이다.
풀이
SELECT
SUM(CASE
WHEN rating = 'G' THEN 1
ELSE 0
END) G,
SUM(CASE
WHEN rating = 'PG' THEN 1
ELSE 0
END) PG,
SUM(CASE
WHEN rating = 'PG_13' THEN 1
ELSE 0
END) PG_13,
SUM(CASE
WHEN rating = 'R' THEN 1
ELSE 0
END) R,
SUM(CASE
WHEN rating = 'NC_17' THEN 1
ELSE 0
END) NC_17
FROM film ;
표의 행과 열이 바뀌었다.
프로그래머스 문제 : NULL 처리하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며,
ANIMAL_ID
,ANIMAL_TYPE
,DATETIME
,INTAKE_CONDITION
,NAME
,SEX_UPON_INTAKE
는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.
IFNULL
을 사용할 수도 있지만CASE
를SELECT
절에 삽입해 사용해봤다.
풀이
SELECT
animal_type,
CASE
WHEN name IS NULL THEN 'No name'
ELSE name
END name,
sex_upon_intake
FROM animal_ins
ORDER BY animal_id ;
결과
정답! 😎 이름이 NULL
인 개는 No name
으로 표시된 걸 볼 수 있다.
Author And Source
이 문제에 관하여(문제 (11) - 조건식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@golmori/exercise-011저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)