본문 바로가기

SQLD/SQL 기본 및 활용5

윈도우 함수(WINDOW FUNCTION) 5 - 그룹 내 비율 함수 RATIO_TO_REPORT 파티션 내 전체 sum값에 대한 행별 컬럼 값의 백분율을 소수로 구할 수 있음. 개발 RATIO의 합을 구하면 1이 됨. EX) JOB별 salary를 %로 출력(ex. 10%) SELECT JOB, ENAME, sal, ROUND(RATIO_TO_REPORT(SAL) OVER(PARTITION BY JOB),2 )*100 || '%' as ratio FROM EMP; PERCENT_RANK 파티션별 윈도우에서 제일 먼저 나오는 것을 0, 제일 나중에 나오는 것을 1로 하여, 값이 아닌 행의 순서별 백분율을 구하는 윈도우 함수 EX) 같은 부서 소속 사원들의 집합에서 본인의 급여가 순서상 몇 번째 위치에 있는 출력 SELECT JOB, ENAME, SAL, ROUND(PERC.. 2019. 7. 4.
윈도우 함수(WINDOW FUNCTION) 4 - 그룹 내 행 순서 함수 FIRST_VALUE 파티션별 윈도우에서 가장 먼저 나온 값을 구할 수 있음. EX1) 부서별 직원들을 연봉이 높은 순서부터 정렬하고, 파티션 내에서 가장 먼저 나온 값 출력 SELECT DEPTNO, ENAME, SAL, FIRST_VALUE(SAL) OVER ( PARTITION BY DEPTNO ORDER BY SAL DESC) AS FIRST_VALUE FROM EMP; LAST_VALUE 파티션별 윈도우에서 가장 나중에 나온 값을 구할 수 있음. EX1) 부서별 직원들을 연봉이 높은 순서부터 정렬하고, 파티션 내에서 가장 나중에 나온 값 출력 SELECT DEPTNO, ENAME, SAL, LAST_VALUE(SAL) OVER ( PARTITION BY DEPTNO ) AS LAST_VALUE .. 2019. 7. 4.
윈도우 함수(WINDOW FUNCTION) 3 - 일반 집계 함수 SUM 파티션별 윈도우 합을 구할 수 있음 EX1) 동일한 DEPTNO를 가진 사원들의 SAL 합계 SELECT DEPTNO,ENAME,SAL,SUM(SAl) OVER (PARTITION BY DEPTNO) AS SUM FROM EMP; EX2) EX1에서 SAL 누적갑 출력 SELECT DEPTNO,ENAME,SAL,SUM(SAl) OVER (PARTITION BY DEPTNO ORDER BY SAL) AS SUM FROM EMP; MAX 파티션별 윈도우 최대값을 구할 수 있음. EX1) DEPTNO가 같은 사원들의 SALARY 중 최대값 구하기 SELECT DEPTNO, ENAME, SAL, MAX(SAL) OVER (PARTITION BY DEPTNO) AS MAXDATA FROM EMP; MIN .. 2019. 7. 4.
윈도우 함수(WINDOW FUNCTION) 2 - 그룹 내 순위 함수 RANK RANK 함수는 ORDER BY 를 포함한 QUERY 문에서 특정 항목(컬럼)에 대한 순위를 구하는 함수. 특정 범위(PARTITION) 내에서 순위를 구할 수도 있고 데이터에 대한 순위를 구할 수 도 있음. 동일한 값에 대해서는 동일한 순위를 부여함. EX) 사원 데이터에서 급여가 높은 순서와 JOB 별로 급여가 높은 순서를 같이 출력 select job,ename,sal, RANK() OVER (ORDER BY sal DESC) ALL_RANK, RANK() OVER (PARTITION BY JOB ORDER BY sal DESC) JOB_RANK FROM emp; DENSE_RANK RANK 함수와 비슷하나, 동일한 순위를 하나의 건수로 취급하는 것이 다름. EX) 사원데이터에서 급여가 높.. 2019. 7. 4.