본문 바로가기

전체 글123

[Oracle] 데이터 분석 - 집계 결과 출력_위 행 (CUBE) 데이터 분석 - 집계 결과 출력 (CUBE) : 데이터를 집계한 결과에 전체 집계를 위 행에 출력 컬럼 하나 SELECT column1, SUM(column2) FROM tablename GROUP BY CUBE(column1); : column1, column2의 합계를 column1으로 묶어 출력하되 가장 위쪽(첫 번째) 행에 column1으로 묶은 column2의 토탈 합계 추가적으로 출력함 - 무조건 오름차순 정렬함 컬럼 둘 SELECT column1, column2, SUM(column3) FROM tablename GROUP BY CUBE(column1, column2); : column1, column2, column3의 합계를 column1별 column2으로 묶어 출력하되, column1.. 2020. 9. 10.
[Oracle] 데이터 분석 - 집계 결과 출력_아래 행 (ROLLUP) 데이터 분석 - 집계 결과 출력 (ROLLUP) : 데이터를 집계한 결과에 전체 집계를 아래 행에 출력 컬럼 하나 SELECT columm1, SUM(column2) FROM tablename GROUP BY ROLLUP(column1); : column1, column2의 합계를 column2로 묶어 출력하되, column2의 마지막 행에 토탈 합계를 추가적으로 출력함 - 무조건 오름차순 정렬 출력 컬럼 둘 SELECT column1, column2, SUM(column3) FROM tablename GROUP BY ROLLUP(column1, column2); : column1, column2, column3의 합계를 column2로 묶어 출력하되, column2별 column3의 토탈합계를 각 마지.. 2020. 9. 10.
[Oracle] 데이터 분석 - 비율 출력 (RATIO_TO_REPORT) 데이터 분석 - 비율 출력 (RATIO_TO_REPORT : 특정 컬럼의 데이터 합계를 기준으로 각 로우의 상대적 비율을 구함 SELECT column1, column2, column3, RATIO_TO_REPORT(column3) OVER() as nickname FROM tablename WHERE column4=100; : column4가 100일 경우, column1, column2, column3와 100일 경우 내에서 column3의 비율을 출력 SELECT column1, column2, column3, RATIO_TO_REPORT(column3) OVER() as 비율, SAL/SUM(column3) OVER() as 비교비율 FROM tablename WHERE column4=100; :.. 2020. 9. 10.
[Oracle] 데이터 분석 - 누적 데이터 출력 (SUM OVER) 데이터 분석 - 누적 데이터 출력 (SUM OVER) : 데이터를 누적해서 출력 - SUM(누적할 컬럼명) OVER(누적할 윈도우) SELECT column1, column2, column3 SUM(column3) OVER(ORDER BY column1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as 누적 FROM tablename WHERE column1 IN('KOREA', 'USA'); : column1을 기준으로 오름차순 정렬 후 column3의 행별 누적치를 출력 - BETWEEN UNBOUNDED AND CURRENT ROW : 맨 첫번째 행부터 현재 행까지 * UNBOUNDED PRECEDING : 맨 첫번째 행을 가리킴 * UNBOUNDED F.. 2020. 9. 9.
[Oracle] ROW를 COLUMN으로 출력 (UNPIVOT) ROW를 COLUMN으로 출력 (UNPIVOT) : COLUMN을 ROW(행)로 출력 - 데이터(행)에 NULL을 포함하고 있다면 결과에 출력되지 않음 SELECT * FROM tablename UNPIVOT(컬럼명지정1 FOR 컬럼명지정2 IN(column1, column2, column3)); : PIVOT과 반대로 열을 행으로 출력 - 컬럼명지정1 은 tablename의 ROW(행)데이터 값의 출력 열 이름 - 컬럼명지정2 는 tablename의 COLUMN(열)이름-column1,column2,column3)-의 출력 열 이름 SELECT * FROM tablename UNPIVOT(컬럼명지정1 FOR 컬럼명지정2 IN(column1 as 'nickname1', column2 as 'nicknam.. 2020. 9. 9.
[Oracle] COLUMN을 ROW로 출력 (PIVOT) COLUMN을 ROW로 출력 (PIVOT) : ROW(행)를 COLUMN으로 출력 - SUM+DECODE 보다 간단함 - FROM절을 반드시 특정 컬럼만 선택해야함 SELECT * FROM (SELECT column1, column2, FROM tablename) PIVOT (SUM(column2) FOR column1 IN(100,200,300)); : column1, column1별 column2합계를 가로 출력 - FROM절 : column1, column2 중에서 - PIVOT절 : column1이 100,200,300 인 경우(COLUMN명), column2의 합계(COLUMN값=행)를 가로로 출력 SELECT * FROM(SELECT colum1, column2 FROM tablename) P.. 2020. 9. 9.
[Oracle] COLUMN을 ROW로 출력 (SUM+DECODE) COLUMN을 ROW로 출력 (SUM+DECODE) : ROW(행)를 COLUMN으로 출력 SELECT SUM(DECODE(column1, 100, column2)) as "100", SUM(DECODE(column1, 200, column2)) as "200", SUM(DECODE(column1, 300, column2)) as "300" FROM tablename; : column1, column1별 합계 column2를 가로로 출력 SELECT column1, DECODE(column1, 100, column2) as "100" FROM tablename; : column1이 100이면 column2를 출력, column1이 100이 아니면 NULL 출력 SELECT SUM(DECODE(column.. 2020. 9. 9.
[Oracle] 데이터 분석 - 가로 출력 (LISTAGG) 데이터 분석 - 가로 출력 (LISTAGG) : 특정 컬럼 데이터 가로 출력 - GROUP BY절과 항상 함께 써야함 SELECT column1, LISTAGG(column2, ',') WITHIN GROUP(ORDER BY column2) as nickname FROM tablename GROUP BY column1; : column2를 ',' 기준 가로로 출력 SELECT column1, LISTAGG(column2, '/') WITHIN GROUP(ORDER BY column2 ASC) as nickname FROM tablename GROUP BY column1; : column2를 '/' 기준 가로로 출력 SELECT column1, LISTAGG(column2||'('||column3||')'.. 2020. 9. 8.
[Oracle] 데이터 분석 - 순위의 비율 출력 (CUME_DIST) 데이터 분석 - 순위의 비율 출력 (CUME_DIST) : 특정 데이터 순위의 비율 출력 SELECT column1, column2, RANK() OVER (ORDER BY column2 DESC) as RANK DENSE_RANK() OVER (ORDER BY column2 DESC) as DENSE_RANK CUME_DIST() OVER (ORDER BY column2 DESC) as CUME_DIST FROM tablename; : 같은 등수가 있을 경우 마지막 등수로 계산함. ex: 1,2,3,3,5,6,7,7,7,10 = 1등 1: 1/10 = 2등 1: 2/10 = 3등 2: 4/10 = 5등 1: 5/10 = 6등 1: 6/10 = 7등 3: 9/10 SELECT column1, column.. 2020. 9. 8.