now is better than never
[Oracle] 공공데이터 서울 상가(상권)정보 분석하기 1 - PIVOT 본문
select 시군구명
, count(case when 상권업종대분류명 = '소매' then 1 end) 소매
, count(case when 상권업종대분류명 = '음식' then 1 end) 음식
, count(case when 상권업종대분류명 = '부동산' then 1 end) 부동산
, count(case when 상권업종대분류명 = '생활서비스' then 1 end) 생활서비스
, count(case when 상권업종대분류명 = '관광/여가/오락' then 1 end) "관광/여가/오락"
, count(case when 상권업종대분류명 = '학문/교육' then 1 end) "학문/교육"
, count(case when 상권업종대분류명 = '숙박' then 1 end) 숙박
, count(case when 상권업종대분류명 = '스포츠' then 1 end) 스포츠
from market_2022
group by 시군구명
order by 시군구명;
출처: 데이터리안 수업 들으면서 배웠던 pivot 테이블 만드는 방법
물론 case when 대신 if함수 가능 (오라클은 DECODE인 듯)
case when 구문 대신 DECODE(상권업종대분류명='소매', 1, null)
을 쓰면 된다
아마 mySQL에는 PIVOT 함수가 없어서 이렇게 만드는 수 밖에 없었던 것 같다
select *
from (
select 시군구명, 상권업종대분류명
from market_2022
)
PIVOT ( count(*) for 상권업종대분류명 IN ('소매', '음식', '부동산', '생활서비스'
, '관광/여가/오락', '학문/교육', '숙박', '스포츠'))
order by 시군구명;
SELECT *
FROM ( SELECT 행, 열 FROM 테이블)
PIVOT ( 집계함수 FOR 열 IN (컬럼명들))
group by를 안 써도 되는게 오히려 지금은 좀 헷갈린다...!
둘 다 같은 결과 출력
역시 먹보의 나라
오라클은 쓰면 쓸수록 헷갈림 ㅠ
그리고 SQL은 PIVOT테이블 만들 때 컬럼명을 다 써야된다는게 정말 너무너무 번거롭다,,,,! 중분류 소분류는 어떻게 하라고ㅜㅜ 파이썬이 짱이네
'SQL > 프로젝트' 카테고리의 다른 글
[Oracle] 상관계수 구하기 - corr (0) | 2022.12.07 |
---|---|
[Oracle] 달러-원화 환율 데이터 분석하기 (0) | 2022.12.05 |
[Oracle] 공공데이터 서울 상가(상권)정보 분석하기 2 (0) | 2022.12.02 |
[Oracle] 이메일에서 도메인 추출하기 - INSTR, SUBSTR, REGEXP_SUBSTR / 첫 번째 행 출력하기 - (LIMIT, TOP) (0) | 2022.12.02 |
[Oracle] 날짜 데이터 년, 월, 일 추출하기 - TO_CHAR, REGEXP_SUBSTR (0) | 2022.11.30 |