回答
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. 如何从表中获得第二高?
- 4. 从MySQL表获取第二大标记
- 5. SQL加入第一,第二和第三行加入表
- 6. Onkey up第二个输入值不应大于第一个值
- 7. 在词典中获得第二和第三最高值
- 8. 从java中的整数数组中获得最大和第二大的数字?
- 9. 获取第二台或第三台显示器的分辨率
- 10. 获取第二级或第三级的子值has_many rails
- 11. 在多维数组中获得第三大值php
- 12. 如何给li添加一个类,它可能是jquery输入的第一,第二或第三个父项?
- 13. 如何找到Pascal的第二大值
- 14. 如何通过第一台获得第二表值值
- 15. 如何获取django模板循环中第二,第三,第n遍的值?
- 16. 查找号码或第二大号码
- 17. MIPS,动态数组,第三个输入覆盖第二个
- 18. 如何在第二个texarea中获得所需的输出?
- 19. 打印字符串中第一大和第二大元素
- 20. 的LINQ:如何获得倒数第二
- 21. 如何使第二个字符大写?
- 22. jquery获取输入的第二个值
- 23. 如何从第一个表中选择ID是否存在于第二个或第三个表中高效?
- 24. 在输入中输入第二个字
- 25. 如何获得未知数量的数字并显示第三大?
- 26. 如何大写第一个和第三个字母?
- 27. Python&OpenCV:第二大对象
- 28. 获得价值从第三表
- 29. 获得第二和第四斜线
- 30. 如何从UIDatePicke获得第二名?
+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