1. case 사용법

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

 

 

 

2. 구간별 몇 명이 있는지 조회

select a.lv, count(*) 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

 

3. with절 사용 (with절 사용 시 전체 선택해서 실행시켜야 함)  // 2번을 3번으로 코드 정리한 것

with table1 as (
	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 
)


select a.lv, count(*) from table1 a
group by a.lv

 

 

 

 

4. quiz

  4-1) [퀴즈] 평균 이상 포인트를 가지고 있으면 '잘 하고 있어요' / 낮으면 '열심히 합시다!' 표시하기!

select pu.user_id, 
	  (case when pu.point > (select avg(point) from point_users pu) then '잘하고있어요'
            else '조금만 더 화이팅' end) as mesg
from point_users pu;

  

  4-2) [퀴즈] 이메일 도메인별 유저의 수 세어보기

    4-2-1) 도메인 출력

select email, SUBSTRING_INDEX(email, '@', -1) as domain from users;

   4-2-2) 

select domain, count(*) from (
	select email, SUBSTRING_INDEX(email, '@', -1) as domain from users
) a 
group by domain;

+ Recent posts