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을 사용하여 쿼리를 작성해보았다
'SQL' 카테고리의 다른 글
SQL 15(데이터 분석 함수로 데이터를 가로로 출력하기/ LISTAGG) (0) | 2023.05.15 |
---|---|
SQL 14(데이터 분석 함수로 순위의 비율 출력하기/ CUME_DIST) (0) | 2023.05.12 |
SQL 12(데이터 분석 함수로 순위 출력하기/DENSE_RANK + extract) (0) | 2023.05.10 |
SQL 11(데이터 분석 함수로 순위 출력하기 RANK: rank() over (order by ~) , PARTITION BY) (0) | 2023.05.09 |
SQL 10(COUNT 건수 출력하기) (0) | 2023.05.08 |