如何在SQL查询中过滤最大值记录

时间:2013-07-15 06:35:17

标签: sql

我想获取除最大值记录之外的所有记录。你能不能建议查询。

例如,(我将AVG字段用于过滤)

SNO   Name     AVG
1     AAA       85
2     BBB       90
3     CCC       75

查询只需返回第1和第3条记录。

4 个答案:

答案 0 :(得分:5)

使用以下查询:

select * from tab where avg<(select max(avg) from tab);

答案 1 :(得分:3)

您可以使用DENSE_RANK等排名函数:

WITH CTE AS(
    SELECT SNO, Name, AVG,
       RN = DENSE_RANK() OVER (ORDER BY AVG DESC)
    FROM dbo.TableName
)
SELECT * FROM CTE WHERE RN > 1

(如果您使用的是SQL-Server&gt; = 2005)

Demo

答案 2 :(得分:0)

试试这个

   SELECT SNO, Name, AVG 
    FROM TableName 
    WHERE AVG NOT IN (SELECT  MAX(AVG) 
                      FROM TableName )

答案 3 :(得分:0)

select * from Sample where avg not in (select max(avg) from sample);

我认为应该这样做