일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스코어카드 만드는법
- 25년 3월 12일 미국 증시 분석
- 미국 투자 분석
- 25년 3월 미국 증시 분석
- Cudnn 버전 확인
- 코딩 사이트 정리
- 25년 3월 11일 미국 증시 분석
- 2025년 3월 6일 미국 증시 분석
- 미국 증시 방향성
- 트럼프 2025년 미국 관세
- jupyter notebook PDF
- 주식 데이터 수집
- 딥러닝 제대로 시작하기
- 취업사이트 정리
- python pandas
- 2025년도 미국 관세
- css 리스크
- 25년 3월 증시 분석
- css risk
- css 리스크관리
- 관세 설명
- 미장 분석
- 트럼프 미국 관세
- 스코어카드 예시
- Python Numpy
- 딥러닝
- 연체 css
- 연체용어
- 미국 증시 분석
- 미국 시황
Archives
- Today
- Total
koos808
[Oracle] 상위 N개 데이터 추출하는 방법(서브쿼리 활용), 상위 0.1% 값 추출 본문
SQL(MySQL˙Oracle˙SqlDbx˙Orange)
[Oracle] 상위 N개 데이터 추출하는 방법(서브쿼리 활용), 상위 0.1% 값 추출
koos808 2023. 9. 14. 10:42728x90
반응형
오라클에서 상위 N개의 데이터를 추출하는 방법 여러가지 방법입니다.
서브 쿼리를 사용하여 데이터를 먼저 정렬한 후, 원하는 개수만큼 데이터를 추출하면 된다. 대부분 ROWNUM 키워드를 사용하며, 특수한 경우에 순위 함수(DENSE_RANK)를 사용하여 순위를 부여한 후 순위로 데이터를 추출하기도 한다.
## Ex. 연봉 상위 N개 행 추출
1. 상위 N개 행 추출 방법 - ORDER BY 사용
#상위 n개의 행(ROW) 추출 방법
SELECT empno
, ename
, sal
FROM (
SELECT empno
, ename
, sal
FROM emp
ORDER BY sal DESC
)
WHERE ROWNUM <= 10
==> 연봉(sal)이 높은 순서로 정렬한 후 ROWNUM을 사용하여 10개의 데이터 추출.
(서브 쿼리에서 ORDER BY를 먼저 수행 후 ROWNUM을 사용해야 합니다)
2. 상위 순위 N개 추출 방법 - DENSE_RANK() 함수 사용
# 상위 순위 n개 추출 방법
SELECT empno
, ename
, sal
FROM (
SELECT empno
, ename
, sal
, DENSE_RANK() OVER(ORDER BY sal DESC) AS rnk
FROM emp
)
WHERE rnk <= 10
==> 연봉이 동일한 경우 같은 순위가 부여되므로 11개의 행이 조회된다.(순위 중 동일 값이 있는 경우 만큼 추가 추출됨)
3. 연봉 유니크값 기준 상위 순위 N개 추출 방법
#연봉 유니크값 기준 상위 순위 N개 추출 방법
SELECT empno
, ename
, sal
FROM (
SELECT DISTINCT empno
, ename
, sal
FROM emp
ORDER BY sal DESC
)
WHERE ROWNUM <= 10
==> 서브쿼리에 DISTINCT 추가
4. (심화) 연봉 유니크값 기준 상위 0.1% 연봉 값 추출하기
SELECT NTILE_100, MIN(SAL) MIN
FROM (
SELECT DISTINCT EMPNO, TO_NUMBER(SAL) SAL, NTILE(100) OVER(ORDER BY TO_NUMBER(SAL)) AS NTILE_100
# 그룹별로 상위 1% 집계하고 싶을 땐 NTILE(100) OVER(PARTITION BY 구분컬럼 ORDER BY ~) 로 작성하면 됨
FROM EMP) A
WHERE NTILE_100 = 100
GROUP BY NTITLE_100;
--------------------------------------------------------------------------------------------------------------------
728x90
반응형
'SQL(MySQL˙Oracle˙SqlDbx˙Orange)' 카테고리의 다른 글
SQL 기본 조회 및 필터링(SELECT, WHERE, AND, OR, GROUP BY 등) (0) | 2025.02.27 |
---|---|
ORACLE SQL NULL값 처리 방법(NVL) (0) | 2023.09.20 |
ORACLE SQL GREATEST(최대값), LEAST(최소값) (0) | 2023.09.12 |
ORACLE SQL 유저 비밀번호 변경 (0) | 2022.06.28 |
[ORACLE] 테이블 컬럼 이름 변경 (0) | 2022.03.31 |
Comments