KEEP GOING
[MySQL] IF/ELSE 조건문 처리와 형 변환 (CASE WHEN, CONVERT, CAST) 본문
반응형
CASE
WHEN 조건
THEN '반환값'
WHEN 조건
THEN '반환값'
ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END
- WHEN THEN은 한쌍으로 존재한다.
- ELSE가 존재하지 않는 경우 반환값이 없어 NULL을 반환하므로 주의
[조건문 처리]
1. 팀 별 평균키 구하기
player 테이블에서 팀별 평균키가 180이상인 경우에는 '180 이상'으로 그렇지 않은 경우는 '180 이하'라는 값을 가지는 평균키라는 컬럼명과 team_id를 출력하시오.
SELECT team_id,
CASE WHEN avg(height) >= 180 THEN '180 이상' ELSE '180 이하'
END AS 평균키
FROM kleague.player GROUP BY team_id;
결과)
2. cart_id와 결제액 조회하기
카트별 결제액을 조회하는데 카트에 담은 금액이 5만원을 넘지 못하는 경우, 배송비 3천원이 붙는다.
SELECT CART_ID,
CASE WHEN SUM(COST)<50000 THEN SUM(COST)+3000 ELSE SUM(COST)
END AS 결제액
FROM MART GROUP BY CART_ID;
3. 나이에 따라 신분 분류하기
SELECT *, CASE WHEN AGE BETWEEN 14 AND 16 THEN '중학생'
WHEN AGE BETWEEN 17 AND 19 THEN '고등학생'
WHEN AGE >= 20 THEN '성인'
ELSE '어린이'
END AS "IDENTITY"
FROM TABLE_NAME;
4. 중성화 여부 파악하기
https://programmers.co.kr/learn/courses/30/lessons/59409
# LIKE % 사용
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN 'O'
WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS ORDER BY ANIMAL_ID;
# SUBSTRING 사용
SELECT ANIMAL_ID, NAME,
CASE
WHEN SUBSTRING(SEX_UPON_INTAKE,1,1)='N' THEN 'O'
WHEN SUBSTRING(SEX_UPON_INTAKE,1,1)='S' THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS ORDER BY ANIMAL_ID;
* SUBSTRING(문자열, A, B): A부터 B번째까지의 부분 문자열 리턴
[형변환]
팀별 평균키를 평균키라는 컬럼명으로 지정하여 팀 별 평균키와 team_id 조회
(단 값은 정수형으로 변환하여 출력하시오)
1) convert(값, data type)
SELECT team_id,
CONVERT(AVG(height), signed) AS 평균키
FROM kleague.player GROUP BY team_id;
2) cast( 값 as data type)
SELECT team_id,
CAST(AVG(height) AS signed) AS 평균키
FROM kleague.player GROUP BY team_id;
결과)
반응형
'code review > sql' 카테고리의 다른 글
[MySQL] LeetCode : Combine Two Tables Solution (0) | 2021.12.20 |
---|---|
[MySQL] 기출 예제 정리 (0) | 2021.12.02 |
[MySQL] JOIN 정리 (INNER JOIN, LEFT/RIGHT JOIN, OUTER JOIN) (0) | 2021.12.02 |
[MySQL] 프로그래머스 코딩 테스트 - 동명 동물 수 찾기 (GROUP BY 사용) (0) | 2021.12.02 |
[MySQL] 코딩 테스트 기본 문법 정리 (0) | 2021.12.02 |
Comments