now is better than never
[Oracle] 서울 커피체인점 비교하기 - group by decode / case when 본문
-- 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 쓰니 코드는 길어지지만 깰끔쓰
난 같은 쿼리가 반복되는걸 안 좋아해서 (코드 길어지는 것도 안 좋아한다..) 원래 같으면 서브쿼리를 쓴다ㅠㅠ 근데 가끔 더 복잡하게 풀 때가 있어서 서브쿼리 안 쓰는 노력하는 중...
'SQL > 프로젝트' 카테고리의 다른 글
[Oracle] 공공데이터 서울 상가(상권)정보 분석하기 3 (0) | 2022.12.08 |
---|---|
[Oracle] SELECT 모든 컬럼(*)에 다른 컬럼 추가하기 (0) | 2022.12.08 |
[Oracle] 상관계수 구하기 - corr (0) | 2022.12.07 |
[Oracle] 달러-원화 환율 데이터 분석하기 (0) | 2022.12.05 |
[Oracle] 공공데이터 서울 상가(상권)정보 분석하기 2 (0) | 2022.12.02 |