개발자 미니민의 개발스터디

[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;

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기