now is better than never

[Oracle] 서울 커피체인점 비교하기 - group by decode / case when 본문

SQL/프로젝트

[Oracle] 서울 커피체인점 비교하기 - group by decode / case when

김초송 2022. 12. 8. 10:47
-- decode
select decode(substr(상호명, 1, 3), '스타벅', '스타벅스', '이디야', '이디야') coffee
        , count(*)
from market_2022
where 상호명 LIKE '%스타벅스%' or 상호명 LIKE '%이디야%'
group by decode(substr(상호명, 1, 3), '스타벅', '스타벅스', '이디야', '이디야');

-- case when
select case when 상호명 LIKE '%스타벅스%' then '스타벅스'
              when 상호명 LIKE '%이디야%' then '이디야'
         end coffee
        , count(*) total
from market_2022
where 상호명 LIKE '%스타벅스%' or 상호명 LIKE '%이디야%'
group by case when 상호명 LIKE '%스타벅스%' then '스타벅스'
              when 상호명 LIKE '%이디야%' then '이디야'
         end;

decode를 쓰는 이디야커피 상호가 그냥 이디야거나 엠케이이디야마곡나루역점 등 중간에 들어간 경우가 있어서 null 값이 생기는거였다....!

 

LIKE 를 쓰기 위해 decode 대신 case when 쓰기!

case when 쓰니 코드는 길어지지만 깰끔쓰

 

난 같은 쿼리가 반복되는걸 안 좋아해서 (코드 길어지는 것도 안 좋아한다..) 원래 같으면 서브쿼리를 쓴다ㅠㅠ 근데 가끔 더 복잡하게 풀 때가 있어서 서브쿼리 안 쓰는 노력하는 중...