코린이의 소소한 공부노트

[MySQL] CASE WHEN, THEN, ELSE 본문

Back-End

[MySQL] CASE WHEN, THEN, ELSE

무지맘 2023. 3. 29. 23:16

[예시에 쓰이는 테이블]


# 2학년 학생들의 한 달 독서량 실태를 보고
# 독서량에 따른 별명을 붙여주려고 한다.
select hakbeon, case when book<2 then '독서 유망주'  # book<2
                     when book<6 then '독서 프로'    # 2<=book<6
                     else '독서광' end               # book>=6
from student_monthly where hakbeon>20000 and hakbeon<30000;

# 결과
hakbeon	case when book<2 then '독서 유망주' when book<6 then '독서 프로' else '독서광' end
20101	독서 프로
20102	독서광
20103	독서 유망주
...

# 칼럼명이 영 맘에 걸린다.
# '당신은 누구?'로 바꿔보자
select hakbeon, book, case when book<2 then '독서 유망주'
                           when book<6 then '독서 프로'
                           else '독서광' end as '당신은 누구?'
from student_monthly where hakbeon>20000 and hakbeon<30000;

# 결과
hakbeon	당신은 누구?
20101	독서 프로
20102	독서광
20103	독서 유망주
...

[CASE WHEN, THEN, ELSE]

1. select절에 case when 조건1 then 결과1 when 조건2 then 결과2 ... else 나머지의결과 end 형태로 쓰인다.

- 구간별로 구분지어 표시할 때 사용한다.

- 구간이 여러개일 경우 when으로 구간을 나누면 된다.

- n번째 조건은 n-1번째 조건을 만족하지 않는다는 것이 포함되어 있다.

 

2. case를 사용하면 결과에 칼럼이 추가된다.

- 칼럼명은 case when ~ 으로 표시된다.

- 칼럼명을 다른걸로 쓰고 싶다면 end 뒤에 as 별명을 쓰면 된다.

- 이때 생긴 칼럼은 가상의 칼럼으로, 실제 테이블에는 영향을 주지 않는다.

'Back-End' 카테고리의 다른 글

[MySQL] SUB QUERY  (0) 2023.04.04
[MySQL] LIKE, NOT LIKE  (0) 2023.03.31
[MySQL] INSERT, UPDATE, DELETE  (0) 2023.03.29
[MySQL] COUNT, GROUP BY, HAVING  (0) 2023.03.28
[MySQL] ORDER BY, LIMIT  (0) 2023.03.18