본문 바로가기
데이터베이스/SQL

SQL NTILE,CUME_DIST,LISTAGG,LAG, LEAD

by ADELA_J 2023. 11. 29.

<NTILE>

- 등급 출력. 

 

▶ 월급의 등급을 4등급으로 나눠서 출력해봄

(균등하게 1등급은 0~25% 2등급은 25~50%, 이런식으로)

▶ NTILE( ) 에 숫자를 4를 쓰면 4등급, 5를 쓰면 5등급으로 나누어짐. 

▷ 100%를 나눠서 등급을 매겨줌

▷ order by 뒤에 nulls last는 월급이 높은 것부터 출력된 후에 NULL을 맨 아래에 출력하겠다는 얘기.

요런 차이

 

<CUME_DIST>

- 데이터 순위의 비율을 출력

 

▶ 월급의 순위와 순위의 비율을 출력하자면 아래와 같음

 

▷ 사원 KING의 0.07인 것은 1/14(총14행)로 계산된 결과, 2등 2명은 3/14(2명이니까 1등1명 + 2등 2명)

 

▶ 파티션바이써서 직업별로 순위 비율 출력해보면

 

 

<LISTAGG>

- 특정 컬럼에 속한 데이터를 가로로 한 칸에 출력

 

▼ LISTAGG 함수를 사용해 부서 번호와 부서에 해당하는 사원들 이름 출력

 

구분자로 콤마를 사용해서 출력함. 

order by를 사용해서 이름을 ABCD 순으로 정렬되게 출력.

▶GROUP BY 절은 LISTAGG 함수를 사용하려면 필수

 

▼ 직업과 직업에 속한 사원들 이름 출력

 

▶만약 월급도 같이 이름이랑 출력하고 싶으면 연결 연산자를 사용하면 됨.

 

 

 

<LAG, LEAD>

- 바로 전 행과 다음 행 출력

 

▶ 바로 전 행의 월급과 다음 다음 행의 월급을 출력

 

LAG와 LEAD에 숫자 1을 쓰면 바로 전 바로 다음, 

2를 쓰면 전전행, 다다음행

 

▶ 직업이 ANALYST 또는 MANAGER인 사원들의 사원번호, 이름, 입사일,

바로 전에 입사한 사원의 입사일, 바로 다음에 입사한 사원의 입사일을 출력해보기

 

▶ 부서번호, 사원번호, 이름, 입사일, 바로 전에 입사한 사원의 입사일, 바로 다음에 입사한 사원의 입사일을

부서번호별로 구분해서 출력

휴 다행히 무사히(?) 출력