【发布时间】:2010-12-19 13:55:44
【问题描述】:
谁能告诉我如何在Oracle中找出表中第N大条目?
就像我们可以使用的最大一样 MAX(column_name) 有没有什么有效的方法来找到第 n 个最大的也?
【问题讨论】:
谁能告诉我如何在Oracle中找出表中第N大条目?
就像我们可以使用的最大一样 MAX(column_name) 有没有什么有效的方法来找到第 n 个最大的也?
【问题讨论】:
如果您希望your_sort_column 中不止一行具有相同的值,您还可以使用 rank() 函数
【讨论】:
您可以使用以下查询找到列的第 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 获得第二个
编辑
糟糕,没有看到 Oracle 标记,抱歉。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
【讨论】:
你可以试试这个使用oracle 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;
【讨论】: