표에서 두 번째로 큰 항목 또는 세 번째로 큰 항목을 가져오는 방법
오라클에 있는 테이블에서 N번째로 큰 항목을 찾는 방법을 알려주실 수 있나요?
최대와 마찬가지로 MAX(column_name)를 사용할 수 있습니다. n번째로 큰 것을 찾을 수 있는 효율적인 방법이 있습니까?
선택 *FROM (SELECT some_column,row_num은 row_num으로 ()(your_sort_column desc순)됩니다.FROM_table) tWHERE 행_num = 3
두 개 이상의 행이 동일한 값을 가질 것으로 예상하는 경우your_sort_column
랭크 () 함수를 사용할 수도 있습니다.
선택 *FROM (SELECT some_column,()을 행_랭크로 순위 매김(your_sort_column desc순)FROM_table) tWHERE 행_순위 = 3This migh return more than one row..
다음 쿼리를 사용하여 열의 N번째로 큰 값을 찾을 수 있습니다.
SELECT *
FROM TableName a
WHERE n = (
SELECT count( DISTINCT (b.ColumnName) )
FROM TableName b
WHERE a.ColumnName <= b.ColumnName
);
아래 쿼리는 NOT IN으로 두 번째로 높은 기록을 찾는 데 도움이 될 것 같습니다.
SELECT MAX( userId )
FROM table
WHERE userId NOT IN (
SELECT MAX( userId )
FROM table
);
단순하고 유용한...
두 번째로 많은 급여를 받으려면 다음을 사용합니다.
select salary from
(select s2.salary,rownum rm from
(select distinct salary from employees order by salary desc)
s2 where rownum<=2)
where rm >= 2
두번째로 높은 월급을 받을 수 있지만,
$query = "SELECT * FROM `table_name` ORDER BY field_name` DESC LIMIT 1 , 1 ";
넌 할 수 있다.ORDER BY column name
그리고 나서.LIMIT 1,1
두 번째 것을 얻다
편집하다
이런, 오라클 태그 못 봤어요, 죄송해요.
ORDER BY column name WHERE ROWNUM = 2
더 잘 될 겁니다.
SELECT DISTINCT (a.sal) FROM EMP A WHERE &N = (
SELECT COUNT (DISTINCT (b.sal)) FROM EMP B WHERE a.sal<=b.sal
);
교체하다&N
당신이 원하는 번호로.예를들면,2
당신에게 두번째로 많은 월급을 줄 것입니다.
PL/SQL을 사용하는 경우 문을 실행하기만 하면 됩니다.그것은 N을 요구할 것입니다.
시도해 보기:
SELECT DISTINCT TOP 3 id,[Password]
FROM Users_changepassword
WHERE [UserId] = 3
ORDER BY id DESC
이거 먹어봐요.
SELECT Sal FROM Tab ORDER BY Sal DESC LIMIT 2,1
오라클 sql의 Row_number() 함수가 사용되는 이 sql을 사용해 볼 수 있습니다.
select column_name from (
select column_name ,
row_number() over (order by column_name desc) as row_num
from table_Name ) tablex
where row_num =3
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee)
당신은 사용할 수 있습니다.CONNECT BY PRIOR
기준:
CREATE TABLE t(i INT, sal INT);
INSERT INTO t(i, sal)
SELECT 1,100 FROM dual UNION
SELECT 2,100 FROM dual UNION
SELECT 3,200 FROM dual UNION
SELECT 4,500 FROM dual UNION
SELECT 5,1000 FROM dual;
쿼리:
SELECT level, MAX(sal) AS sal
FROM t
--WHERE level = 2 -- set position here
CONNECT BY prior sal > sal
GROUP BY level
ORDER BY level;
편집:
두번째 접근방법은 사용하는 것입니다.NTH_VALUE
분석 함수:
SELECT DISTINCT NTH_VALUE(sal, 2) OVER(ORDER BY sal DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM t;
언급URL : https://stackoverflow.com/questions/4483222/how-to-get-second-largest-or-third-largest-entry-from-a-table
'programing' 카테고리의 다른 글
기존 시퀀스가 아닌 시퀀스를 삭제하여 기존 사용자를 생성할 수 있습니다. (0) | 2023.10.29 |
---|---|
다른 페이지의 앵커 태그에 대한 앵커 링크가 작동하지 않음 (0) | 2023.10.29 |
자바스크립트에서 배열 길이를 제한할 수 있습니까? (0) | 2023.10.29 |
우분투에 php70-gd 설치 (0) | 2023.10.29 |
PowerShell에서 실행 중인 프로세스 목록을 보는 방법 (0) | 2023.10.29 |