2013-07-15 69 views
-1

我想獲取除最大值記錄以外的所有記錄。你能否提出建議查詢。如何過濾SQL查詢中的最大值記錄

對於例如,(我要帶去AVG場進行篩選)

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

查詢需要返回只有第一和第三的記錄。

+0

做你試圖用'NOT IN'? – Nithesh

+3

-1你沒有展示你試過的東西。你的問題很微不足道。 – Leri

+0

我曾嘗試過,但在java代碼。 – Srinivasan

回答

5

使用下面的查詢:

select * from tab where avg<(select max(avg) from tab); 
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-服務器> = 2005)

Demo

+0

並非所有的DBMS都支持CTE。 – Sam

+0

@Sam:你說得對。以某種方式假定sql-server。 –

0

試試這個

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

爲什麼'不是'而不是'<? – Leri

+0

我只是指出了另一種方法。更一般的,即使它是MAX(),MIN()或AVG(),它也能正常工作。 – Nithesh

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

我想這應該做