Oracle/SQL (98) 썸네일형 리스트형 SQL 데이터 변환 - Pivot , Unpivot ROW 를 COLUMN 로 출력하기 (2) PIVOT pivot = 회전하다. SUMDECODE 는 너무 길어서 PIVOT 으로도 행을 컬럼으로 출력 할 수 있다. 행을 컬럼으로 출력하는 함수 : PIVOT 컬럼을 행으로 출력하는 함수 : UNPIVOT 지금까지 SUM+DECODE문으로 출력했는데 PIVOT 문으로도 가로로 출력 할 수 있다. 쿼리 실행 순서 : from - pivot - select from 절에서 : 필요한 컬럼만 선정하는것 (select 절로) pivot 문에는 from 절에서 선정한 컬럼명만 쓸 수 있다. 예제 : 부서번호와 부서번호별 토탈월급을 출력하는데 가로로 출력하세요 (데이터를 컬럼으로 빼기) select * from ( select deptno, sal from emp);.. SQL Sum + Decode 컬럼을 행으로 바꿔 출력 컬럼을 ROW로 출력하기 (1)SUM+DECODE 가로로 뽑기전, 세로로 먼저 출력한다. 문제 : 부서번호, 부서번호별 토탈 월급을 일단 세로로 출력한다. select deptno, sum(sal) from emp group by deptno; 문제 : 부서번호, 보너스를 출력 부서번호가 10→ 자기자신의 월급이 출력 그렇지 않으면 그냥 0 이출력 select deptno, decode (deptno , 10 , sal, 0) as 보너스 from emp; → 후에 나온 값을 모두 더해준다.(SUM) 부서번호의 10번의 모든 월급을 더하기 때문에 select 바로앞 deptno 컬럼은 삭제한다. sum 만 씀. select sum(decode (deptno , 10 , sal, 0)) as "10" fr.. SQL 데이터 분석함수 - Row_number 출력결과 넘버링 ROW_NUMBER(출력되는결과를 원하는 컬럼별 순서대로넘버링) row_number() over (order by sal desc) as 별칭 —> ____ 에 order by 문법을 꼭 부여해야한다. →넘버링을 하는이유는, 어떤 출력 되는 결과의 몇번째 행을 출력 시킬때 유용하다. 예제 : row_number 데이터 분석함수는 출력되는 select 문의 결과의 행에 numbering(번호부여) 하는 함수이다. 넘버링의 장점은 : 출력되는 결과의 두번째, 세번째 등등 원하는 행을 출력,검색 할 수 있다. select empno, ename, sal, row_number() over (order by empno asc)번호 from emp where deptno= 20; 위의 식의결과에서 두번째행만 출력 .. SQL 데이터 분석함수 - 집계결과 출력 Grouping sets Grouping sets cube 와 rollup 을 사용하기 편리하게 도와주는 것 grouping sets( (그룹핑할 컬럼1), (그룹핑할컬럼2) , () ) select deptno, job, sum(sal) from emp group by grouping sets ((deptno), (job),()) order by deptno, job asc; → rollup 과 cube 보다 출력되는 결과를 더 쉽고 정확하게 예측 할 수 있습니다. → () 의 의미는 전체 집계이다. → 그룹핑할 컬럼에 ( ) 괄호로 둘러주어야한다. 문제 246 : 아래의 sql 결과를 rollup 이용하지말고 grouping sets 로 수행하시오 select deptno, sum(sal) from emp group by g.. SQL 데이터 분석함수 - 집계결과 출력 Cube 집계결과가 맨 아래 : rollup 집계결과가 맨 위에 : cube CUBE = 결과값이 맨위출력 예제 : select nvl(job, '전체토탈'), sum(sal) from emp group by cube(job); 문제 : 위의 결과에서 NULL 값에 전체 토탈이라고 출력되게 하시오 select nvl(to_char(deptno), '전체토탈')as DEPTNO, sum(sal) from emp group by cube(deptno); 문제 245 : 직업, 직업별 인원수를 출력하는데 아래와 같이 맨 위에 전체토탈이 출력되게하시오 select nvl(job, '전체토탈')as JOB, count(*) from emp group by cube(job); → 이미 JOB 이 문자이므로 NVL 함수 쓸때.. SQL 데이터 분석함수 - 집계결과 출력 Rollup ROLLUP (집계 결과 출력하기) group by 절에 rollup 을 이용하게 되면 전체 집계값이 아래에 출력이 됩니다. 만약 sum 을 쓰면 sum 값, avg 면 전체 avg 값등 수식에 따라 다르다. 예제 : 직업, 직업별 토탈월급을 출력하는데 맨 아래에 전체토탈월급이 출력 되도록 하시오 select job, sum(sal) from emp group by rollup (job); → 맨 아래에 전체 토탈월급(집계값) 이 출력된다. 문제 226 : 부서번호, 부서번호별 평균월급을 출력, 맨아래에 전체평균월급도 출력 select deptno, avg(sal) from emp group by rollup(deptno); 문제 227 : 나이, 나이별 인원수를 출력하는데 맨 밑에 전체 인원수 출력 s.. SQL 데이터 분석함수 - 원형 비율출력 Ratio_to_report RATIO_TO_REPORT (데이터분석함수로 비율출력) 예제 : select empno, ename, sal, ratio_to_report(sal) over () as 비율, sal/sum(sal) over () as "비교비율" from emp where deptno = 20; → 일부러 비교비율 식을 넣어 ratio_to_report 식이 잘 나왔나 확인해봄. 전체월급에서 월급을 나누었음. 문제 : 위의 결과를 다시 출력 하는데, 비율이 높은 사원부터 출력 select empno, ename, sal, ratio_to_report(sal) over () as 비율, sal/ sum(sal) over () as "비교비율" from emp where deptno = 20 order by 비율 desc.. SQL 데이터 분석함수 - 누적데이터 Sum () over () SUM OVER (누적데이터) sum(sal) over () from emp → over 다음( 괄호)에 아무것도 넣지않으면 누적되지않은 총값만 나오게 된다. 누적 되는식으로 데이터가 나타나려면 order by 절에 select ename, sal, sum(sal) over( order bY sal asc rows between unbounded preceding and current row) 누적치 from emp where job in ('ANALYST', 'MANAGER') unbounded preceding : 제일 첫번째 행 unbounded following : 맨 마지막 행 current row : 현재 행 문제 219 : 부서번호, 이름, 월급, 월급의 누적치가 출력 되게하고 월급의 누적치.. 이전 1 ··· 6 7 8 9 10 11 12 13 다음 목록 더보기