[Oracle] 오라클 - 분석 함수 나머지 (LISTAGG () WITHIN GROUP() / NTILE() OVER() 등)
by mini_min[Oracle]
오라클 - 분석 함수 나머지 (LISTAGG () WITHIN GROUP() / NTILE() OVER() 등)
1) LISTAGG () WITHIN GROUP()
각 그룹의 데이터를 정렬하여 열의 값을 연결시키는 함수다.
SELECT dept, LISTAGG(name, ',') WITHIN GROUP(ORDER BY empNo)
FROM emp
GROUP BY dept;
💡 연결할 열의 값이 name 이고, ',' 으로 연결할 것
empNo, 로 부서별로 데이터를 정렬한다는 뜻이다.
2) LAG () OVER() 함수와 LEAD() OVER() 함수
둘 다 속도가 엄청 느려서 별로 추천 안함
LAG OVER() : 이전 레코드 (행) 읽기
LEAD() OVER() : 이후 레코드 (행) 읽기
SELECT name, sal, LAG(sal, 1, 0) OVER(ORDER BY sal DESC) lag
FROM emp;
💡 0은 처음 레코드 출력 값
sal 컬럼 값이 1(하나)씩 밀려서 0(처음)부터 출력된다는 뜻이다.
3) NTILE() OVER() 함수
NTILE() 가로 안에 나누고 싶은 그룹 수를 주고, OVER 안에 그룹으로 나눌 값의 기준을 준다.
ex) 10명을 3그룹으로 나누고 싶을 때 지정된 그룹 수로 나눠주는 함수
SELECT name, sal,
NTILE(6) OVER(ORDER BY sal DESC) 그룹 -- 월급 내림차순으로 6그룹 나눔
FROM emp;
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - DDL (컬럼 변경, 추가, 논리적 삭제 ALTER/DROP) (0) | 2022.08.10 |
---|---|
[Oracle] 오라클 - DDL (테이블 생성 CREATE/가상컬럼/서브쿼리) (0) | 2022.08.10 |
[Oracle] 오라클 - AVG() OVER() / MAX() 와 MIN() / RATIO_TO_REPORT() (0) | 2022.08.09 |
[Oracle] 오라클 - COUNT() OVER() / SUM() OVER() (0) | 2022.08.09 |
[Oracle] 오라클 - 분석 함수 (RANK/ DENSE_RANK/ROW_NUMBER) (0) | 2022.08.09 |
블로그의 정보
개발자 미니민의 개발로그
mini_min