목록SQL/프로젝트 (12)
now is better than never

데이터 전처리 과정은 귀찮아서 생략,,, SELECT b19.*, ROUND(ratio_to_report(매장수) OVER ()*100, 1) "비율(%)" FROM (SELECT RANK() OVER (ORDER BY COUNT(*) desc) 순위, 상호명, COUNT(*) 매장수 FROM burger_2019 GROUP BY 상호명) b19 WHERE 순위 = TO_DATE('2019/01/01') GROUP BY TO_CHAR(날짜, 'YYYY/Q') ) SELECT 날짜, 노브랜드 , ROUND(( (노브랜드 - LAG(노브랜드) OVER (ORDER BY 날짜)) / LAG(노브랜드) OVER (ORDER BY 날짜) ) *100, 1) "노브랜드 검색 증가율(%)" , 프랭크 , ROUND(..

-- WITH VIEW WITH coffee_2022 AS (SELECT CASE WHEN 상호명 LIKE '%이디야%커피%' THEN '이디야커피' WHEN 상호명 LIKE '%스타벅스%' THEN '스타벅스' WHEN 상호명 LIKE '%메가%커피%' THEN '메카커피' WHEN 상호명 LIKE '%컴포즈%커피%' THEN '컴포즈커피' ELSE 상호명 END 상호명 FROM market_2022 WHERE 상권업종중분류명 = '커피점/카페') , coffee_2019 AS (SELECT CASE WHEN 상호명 LIKE '%이디야%커피%' THEN '이디야커피' WHEN 상호명 LIKE '%스타벅스%' THEN '스타벅스' WHEN 상호명 LIKE '%메가%커피%' THEN '메카커피' WHEN ..

PIVOT ROUND 컬럼 하나하나 씩 ROUND를 적용하면 된다...^^ 물론 *는 어림도 없다! 그런데 SELECT ROUND(PRESIDENT), ROUND(MANAGER), ROUND(SALESMAN), ROUND(CLERK), ROUND(ANALYST) FROM (SELECT job, sal FROM emp) pivot (avg(sal) FOR job IN ( 'PRESIDENT', 'MANAGER', 'SALESMAN', 'CLERK', 'ANALYST')); 이러면 부적합한 식별자라고 에러가 뜨는데 이유는 컬럼명에 ' ' 이 붙기 때문이다! 해결 방법은 별칭을 추가하는 방법! SELECT ROUND(PRESIDENT), ROUND(MANAGER), ROUND(SALESMAN), ROUND(C..

조인을 이용해서 업종별 상가 증감 수치를 보고 싶었다 SELECT m19.상권업종대분류명, "2019", "2022" , "2022"-"2019" "19년 대비 22년 상가 증감수" , ROUND(("2022"-"2019")/"2019",4)*100 증감률 FROM (SELECT 상권업종대분류명, COUNT(*) AS "2019" FROM market_2019 GROUP BY 상권업종대분류명) m19 join (SELECT 상권업종대분류명, COUNT(*) AS "2022" FROM market_2022 GROUP BY 상권업종대분류명) m22 ON m19.상권업종대분류명 = m22.상권업종대분류명; 스포츠 외 모든 업종에서 감소했고 스포츠는 23배가 증가했다....! 가장 타격을 많이 받은 업종은 역시..
SELECT m.*, CASE WHEN 상호명 LIKE '%스타벅스%' THEN '스타벅스' WHEN 상호명 LIKE '%이디야%' THEN '이디야' ELSE 상호명 END 커피 FROM market_2019 m WHERE 시도명 = '서울특별시' AND 상권업종중분류명 = '커피점/카페' SELECT m.*, CASE WHEN 상호명 LIKE '%스타벅스%' THEN '스타벅스' WHEN 상호명 LIKE '%이디야%' THEN '이디야' ELSE 상호명 END 커피 FROM market_2022 m WHERE 상권업종중분류명 = '커피점/카페' 테이블 별칭 추가하고 *(asterisk)앞에 테이블 별칭 명시

-- 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 '%이디야%' ..