Case, When, Then, Else 는 다음과 같이 사용할 수 있습니다.
case when [조건식] then [반환값]
else [일치하는 조건이 없는 경우 반환값] end
예시를 살펴보겠습니다.
유저의 point가 10000점 이상, 5000점 이상 10000미만, 5000점 미만인 경우로 나누어서, 새 필드에 값을 넣어주겠습니다.
select pu.user_id, pu.point,
(case when pu.point >= 10000 then '1만 이상'
when pu.point >= 5000 then '5천 이상'
else '5천 미만' end) as lv
from point_users pu
위처럼 비교 연산자를 사용하여 조건을 걸어줄 수 도 있고, NULL 연산자나 산술 연산자를 사용해 여러 개의 조건을 줄 수도 있습니다.
위와 같은 테이블을 만들면, point의 범위에 따른 유저 수도 파악할 수 있지 않을까요?
select a.lv, count(a.lv) from (
select pu.user_id, pu.point,
(case when pu.point >= 10000 then '1만 이상'
when pu.point >= 5000 then '5천 이상'
else '5천 미만' end) as lv
from point_users pu
) a
group by a.lv
With를 사용해서 따로 테이블을 정의해주면 보기 쉽게 작성할 수 있습니다.
with table1 as (
select pu.point_user_id, pu.point,
(case when pu.point >= 10000 then '1만 이상'
when pu.point >= 5000 then '5천 이상'
else '5천 미만' end) as lv
from point_users pu
)
select a.lv, count(*) as cnt from table1 a
group by a.lv
728x90
'DB > SQL' 카테고리의 다른 글
[프로그래머스/SQL] 과일로 만든 아이스크림 고르기 (0) | 2023.03.22 |
---|---|
[프로그래머스/SQL] 서울에 위치한 식당 목록 출력하기 (0) | 2023.03.22 |
[SQL] SUBSTRING_INDEX, SUBSTRING 문자열 데이터 다루기 (0) | 2023.03.21 |
[DB/SQL] With절을 사용하여 임시 테이블 생성하기 (0) | 2023.03.21 |
[DB/SQL] SubQuery - Select, Where, From절에서 사용하기 (0) | 2023.03.21 |