SQL

SQL 13(데이터 분석 함수로 등급 출력하기 / NTILE)

아리빠 2023. 5. 11. 10:41

1. 이름과 월급, 직업, 월급의 등급을 출력하고자 한다.

-월급의 등급은 4들급으로 나눠 1등급(0~25%), 2등급(25~50%), 3등급(50~75%), 4등급(75~100%)으로 나누기 

 

-> select ename, sal, job 

ntile을 이용한 등급 나누기 -> ntle(원하는 n등분의 숫자 쓰기)

 

첫시도

: 단순히 NTILE(n)을 사용하여 쿼리 작성 했더니, 윈도우에 대한 지정이 없단 결과가 나왔다

 

 

●NTILE

NTILE(bucket_count) OVER (PARTITION BY partition_expression ORDER BY sort_expression)

-bucket_count는 결과를 분할할 버킷(그룹)의 수를 지정
-partition_expression은 옵션으로, 결과를 분할할 때 사용할 파티션 기준을 지정

이를 사용하지 않으면 전체 결과가 하나의 그룹으로 간주
-sort_expression은 결과를 정렬할 열 또는 열의 목록을 지정, 이 열을 기준으로 결과가 분할.

 

 

sql에서 분석함수를 적용할 때 사용되는 over을 생략해버려 발생한 오류같다

 


재시도

값이 정상적으로 출력됐다.


*nulls last

sort_expression에 해당하는 열의 기준을 생성해주는 쿼리를 작성해 더 나은 쿼리 만들어보기

 

-null last는 null을 맨 아래에 출력하겠단 의미이다.

즉, order by sal desc nulls last 를 사용하게 되면, 월급을 높은것부터 출력하며, null은 맨 아래에 출력하겠단 의미가 된다

값은 같기에 comm을 사용하여 쿼리를 작성해보았다