回答
SELECT * FROM ( SELECT some_column, row_number() over (order by your_sort_column desc) as row_num FROM some_table ) t WHERE row_num = 3
如果您預計多行有在your_sort_column
您還可以使用秩()函數
SELECT * FROM ( SELECT some_column, rank() over (order by your_sort_column desc) as row_rank FROM some_table ) t WHERE row_rank = 3這migh返回多行相同的值..
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.
我認爲下面的查詢將用於找到NOT IN中的第二高記錄。
SELECT MAX(
userId
)FROM表WHERE userId
NOT IN(SELECT MAX(userId
)FROM表)
簡單實用...
爲了得到第二大的薪水使用本:
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
完美的作品,但我仍然不明白爲什麼查詢不起作用後修改如下 修改: 選擇s2.salary,rownum rm從 (select distinct員工薪水按工資desc計算) s2其中rm <= 2 – Abilash 2012-11-26 05:27:53
可以使用下面的查詢
SELECT * FROM TableName a WHERE
n = (SELECT count(DISTINCT(b.ColumnName))
FROM TableName b WHERE a.ColumnName <=b.ColumnName);
歡迎使用Stack Overflow!感謝您發佈您的答案!請務必仔細閱讀[自助推廣常見問題](http://stackoverflow.com/faq#promotion)。另請注意,每次鏈接到您自己的網站/產品時,您都必須*發佈免責聲明。 – 2013-01-23 06:29:11
它適用於第二高的薪水找到列第n個最大值,
$query = "SELECT * FROM `table_name` ORDER BY field_name` DESC LIMIT 1 , 1 ";
試試這個:
SELECT DISTINCT TOP 3 id,[Password]
FROM Users_changepassword
WHERE [UserId] = 3
ORDER BY id DESC
nice ans thanksssssssssssssssssssssssssssssssssssss – user2326989 2015-04-27 10:15:22
這不適用於Oracle。 – 2015-08-19 18:53:07
你可以試試這個SQL其中的Oracle SQL的ROW_NUMBER()函數用於
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;
- 1. 查詢來獲取第三大量第二大的量從表
- 2. 如何獲得第二個或第三個提交ID?
- 3. Laravel雄辯如何獲得第二或第三個記錄?
- 4. 獲得第二和第三個逗號
- 5. 我如何獲得MySQL中的第二個最大ID?
- 6. 如何從表中獲得第二高?
- 7. 第二大號
- 8. 從MySQL表獲取第二大標記
- 9. SQL WHERE條件獲得第一和第二最大信號值
- 10. 如何獲得第N個大項
- 11. SQL加入第一,第二和第三行加入表
- 12. Onkey up第二個輸入值不應大於第一個值
- 13. 水晶報表 - 獲得第一,第二和linkedTable價值的第三次出現
- 14. 如何輸入第二行
- 15. 如何獲得最大的價值和第二大的價值做減法?
- 16. 在詞典中獲得第二和第三最高值
- 17. SUM第二和第三大號碼的開出前5號
- 18. 如何獲得xslt中子字符串的第二個(第三...)發生?
- 19. 在Excel中,如何獲得第一列大於1且第二列大於2的記錄數?
- 20. 如何在htmlunit中獲取同名的第二張表和第三張表
- 21. 第二大數組
- 22. 如何找到樹中第二大值
- 23. 從java中的整數數組中獲得最大和第二大的數字?
- 24. 如何從陣列中獲得第二高值,第三高值等
- 25. 第二個和第三個最大值T-SQL
- 26. 找到第二個和第三個最大元素數組java
- 27. 在圖中找到第一個,第二個和第三個最大值
- 28. 如何第二或第三的EditText添加到AlertDialog
- 29. 獲取第二級或第三級的子值has_many rails
- 30. 獲取第二臺或第三臺顯示器的分辨率
+1:只有警告是分析功能支持9i +。根據需要,DENSE_RANK可能是比RANK更好的選擇。 – 2010-12-19 19:28:33
不正確。分析功能在8i中可用:http://download.oracle.com/docs/cd/A87860_01/doc/server.817/a85397/function.htm#81409。但8i和9i無論如何都是不支持的。所以沒有理由發表回答涵蓋這些版本,如果沒有明確提到 – 2010-12-19 21:18:18