[SQL] 오라클 SQL - 열의 최대 5 개 값을 검색하는 방법
SQL오라클 SQL - 열의 최대 5 개 값을 검색하는 방법
당신은 어떻게 행만을 선택 번호 중 가장 높은 또는 가장 낮은 열 값을 반환하는 쿼리를 작성하려면 어떻게해야합니까.
5 명 가장 높은 급여 직원, 즉 보고서?
해결법
-
==============================
1.이 작업을 수행하는 가장 좋은 방법은 분석 기능이며, RANK () 또는 DENSE_RANK () ...
이 작업을 수행하는 가장 좋은 방법은 분석 기능이며, RANK () 또는 DENSE_RANK () ...
SQL> select * from ( 2 select empno 3 , sal 4 , rank() over (order by sal desc) as rnk 5 from emp) 6 where rnk <= 5 7 / EMPNO SAL RNK ---------- ---------- ---------- 7839 5000 1 7788 3000 2 7902 3000 2 7566 2975 4 8083 2850 5 7698 2850 5 6 rows selected. SQL>
동점이있을 때 DENSE_RANK ()는 간극을 압축 :
SQL> select * from ( 2 select empno 3 , sal 4 , dense_rank() over (order by sal desc) as rnk 5 from emp) 6 where rnk <= 5 7 / EMPNO SAL RNK ---------- ---------- ---------- 7839 5000 1 7788 3000 2 7902 3000 2 7566 2975 3 8083 2850 4 7698 2850 4 8070 2500 5 7 rows selected. SQL>
어떤 행동을 당신이 선호하는 귀하의 비즈니스 요구 사항에 따라 달라집니다.
우리가 행의 정확한 수를 반환하는 데 사용할 수있는 ROW_NUMBER () 분석 함수도 있습니다. 그러나, 우리는 비즈니스 로직 임의로 넥타이의 경우에 결과 집합을 절단하는 행복하지 않으면 행 번호를 기반으로 솔루션을 사용하지 않아야합니다. 높은 값으로 분류 다섯 개 가장 높은 값을 요구하고 처음 다섯 개 기록 차이가 있습니다
ROWNUM 의사 열을 사용하여 비 분석 솔루션도 있습니다. ROWNUM은 예기치 않은 결과로 이어질 수 ORDER BY 절, 전에 적용되기 때문 어설픈입니다. 사용하는 대신 ROW_NUMBER의 ROWNUM () 또는 순위 기능 중 하나에 대한 이유는 거의 없다.
-
==============================
2.이거 한번 해봐:
이거 한번 해봐:
SELECT * FROM (SELECT field1, field2 FROM fields order by field1 desc) where rownum <= 5
또한 방법 ROWNUM 작품에 대한 자세한 설명은이 자원에 봐.
-
==============================
3.오라클 9i의 +는 분석 기능을 제공합니다 :
오라클 9i의 +는 분석 기능을 제공합니다 :
모두는 ROW_NUMBER / RANK / DENSE_RANK 값이 반환 적절하게 조정 BY 절 PARTITION BY와 ORDER를 허용 OVER 절의 사용을 필요로한다.
부수적으로 빠른 ROW_NUMBER (링크)를 사용하는 것보다 - 9i의 이전에, 유일한 옵션은 ROWNUM과 함께 작업을했다.
-
==============================
4.오라클 12C, 이것은 FETCH..FIRST ROWS..ONLY을 사용하여 달성 될 수있다
오라클 12C, 이것은 FETCH..FIRST ROWS..ONLY을 사용하여 달성 될 수있다
상위 5 개 가장 높은 급여를 가져 오기합니다.
SELECT * FROM EMPLOYEES ORDER BY SALARY DESC FETCH FIRST 5 ROWS ONLY;
-
==============================
5.
Select emp_id , salary from employees Order by salary desc Limit 5;
from https://stackoverflow.com/questions/2306744/oracle-sql-how-to-retrieve-highest-5-values-of-a-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] OR은 SQL Server의 CASE 문이 지원되지 않습니다 (0) | 2020.03.29 |
---|---|
[SQL] 읽기 커밋과 반복 읽기의 차이 (0) | 2020.03.29 |
[SQL] SQL은 : 그룹 당 최대 기록을 찾기 [중복] (0) | 2020.03.29 |
[SQL] 왜 IDENTITY 열 값이 차이는 무엇입니까? (0) | 2020.03.29 |
[SQL] 저장 프로 시저 파라미터리스트의 발현 (예를 들면 함수 호출)의 결과를 이용? (0) | 2020.03.29 |