전체 글 (142) 썸네일형 리스트형 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 : 부서번호, 이름, 월급, 월급의 누적치가 출력 되게하고 월급의 누적치.. SQL 데이터 분석함수 - 전행과, 다음행 출력 Lag, Lead(컬럼, 1 or 2..)over (partition by ~ order by ~ desc/asc ) LAG, LEAD ( 전행과, 다음행 출력하기) → 은행에서 통장 잔고 확일할때 LAG ,LEAD 의 원리로 SQL 쿼리를 입력한다. LAG : 전행 → LAG( 컬럼명, 1 OR 2 OR 3 ...) LEAD : 다음행 → LEAD (컬럼명 , 1 OR 2 OR 3...) → 1 은 바로 전행 2는 전전행 3은 전전전행 .... 예제 46 : 이름 , 입사일, 바로전에 입사한 사원과의간격일 출력 select ename, hiredate, hiredate - lag(hiredate,1) over (order by hiredate asc) as days from emp; 문제 : 이름, 생일 , 생일과의 간격일을 출력 select ename, birth, birth - lag(birth , 1) over .. SQL 데이터 분석함수 - 데이터 가로출력 Listagg (컬럼명,',') within group(order by~ desc/asc ) LISTAGG(가로로 출력하기) → group by 절을 반드시 써야한다. 예제 : 부서번호를 출력, 해당부서번호별로 속한 사원들의 이름을 가로로 출력 select deptno, listagg(ename, ',') within group (order by ename asc) from emp group by deptno; 분석함수 ( ) 에 괄호에 무언가 채워넣어져 있다면 within group 을 사용해야한다. 이름과 이름사이는 ',' , 콤마로 구분하겠다. 어떻게 가로로 출력 하는가?? → within group ( order by 컬럼명 asc or desc)를 쓰지 않고 listagg 만 써도 데이터 결과는 나오지만, 출력되는 결과를 정렬해서 가로로 나오게 하고싶다면 within group ( or.. SQL 데이터 분석함수 - 상위비율구하기 Cume_dist () over ( partition by ~ order by ~ desc/asc) CUME_DIST(순위의 비율 출력하기) → 상위 몇 % ? 예제 : 이름, 월급, 월급순위, 월급순위의비율을 출력 select ename, sal, dense_rank() over (order by sal desc)as 순위 , cume_dist () over (order by sal desc)as 순위비율 from emp; → emp table 기준으로 1등은 1/14 로 계산된 비율 2등은 3/14 로 계산된비율(2등이 2명이기 때문에 )입니다. 문제 179 : 클래스타입,이름, 나이, 그옆에 클래스 타입별로 각각 나이가 높은 순서대로 자기의 나이에 대한 순위의 비율이 출력 select class_type, ename, age, address, cume_dist() over ( partition b.. SQL 데이터 분석함수 - 등급 출력 Ntile( 숫자) over( order by ~ desc/asc ) 데이터 분석함수는 그룹함수가 아닌 별도의 함수이다. NTILE(등급 출력하기) → ntile ( 원하는 등급 갯수) over ( order by 컬럼 desc / asc) as 등급 예제 : 직업이 'ANALYST, MANAGER, CLERK 인 사원들의 이름과 직업과 월급과 등급을 출력하는데 등급을 4등급으로 나눠서 출력하세요 select ename, job, sal, ntile(4) over( order by sal desc) 등급 from emp where job in ('ANALYST','MANAGER','CLERK'); 0 이전 1 ··· 12 13 14 15 16 17 18 다음 목록 더보기