我有以下表格:MAX功能由
ID | NUM
1 | 4
2 | 9
3 | 1
4 | 7
5 | 10
我想要的結果:
ID | NUM
5 | 10
當我嘗試使用MAX(NUM)我得到的和錯誤,我有使用GROUP BY以使用MAX功能
任何想法?
我有以下表格:MAX功能由
ID | NUM
1 | 4
2 | 9
3 | 1
4 | 7
5 | 10
我想要的結果:
ID | NUM
5 | 10
當我嘗試使用MAX(NUM)我得到的和錯誤,我有使用GROUP BY以使用MAX功能
任何想法?
按照錯誤,使用像Max
聚集的需要一個Group By
子句,如果在選擇列表中有任何非聚合列(在您的c ase,您正試圖找到MAX(Num)
,然後返回ID
列中關聯的值)。在MS SQL Server,可以讓你通過排序和限制想要什麼返回行:
SELECT TOP 1 ID, NUM
FROM [table]
ORDER BY NUM DESC;
在其他RDBMS系統的LIMIT
提供了類似的功能。
編輯
如果您需要返回其具有相同的最大的所有行,然後使用WITH TIES
qualification:
SELECT TOP 1 WITH TIES ID, NUM
FROM [table]
ORDER BY NUM DESC;
做到這一點 -
SELECT TOP 1 ID,
NUM
FROM <yourtable>
ORDER BY NUM DESC;
@AaronBertrand - 我希望你知道提問者可以編輯他的問題。你爲什麼認爲在那裏有3個答案和LIMIT? – JHS
對不起,我5個小時後來到這裏,沒有看到有任何編輯問題的證據。很明顯,如果我看到LIMIT的答案,我不應該讓他們留下來,因爲他們不正確,對吧?感謝您的糾正,但現在它只是一個重複。 –
可能返回大於1分的結果:
SELECT id, num
FROM table
WHERE num = (SELECT MAX(num) FROM table)
嘗試此查詢。
WITH result AS
(
select DENSE_RANK() OVER( ORDER BY NUM desc) AS RowNo,ID,NUM from #emp
)
select ID,NUM from result where RowNo=1
它將返回最大值,即使它有更多的最大值,如:
ID | NUM
5 | 10
6 | 10
參考以下鏈接瞭解更多關於排名函數:
http://msdn.microsoft.com/en-us/library/ms189798
得到所有行具有最大值,但有3選擇,這對性能不好
SELECT id, MAX(num) as num
FROM table
GROUP BY id
ORDER BY MAX(num) DESC
LIMIT (SELECT COUNT(*)
FROM table
WHERE num =(SELECT MAX(num) FROM table)
)
這個問題被標記爲SQL Server,沒有'LIMIT' – Taryn
你最想做什麼? 'ID'還是'NUM'? – JHS
我想要MAX的MAX,但我也想知道ID。 –
如果您切斷5,10並且如預期的結果那樣有2,9,則示例可能會更好。另外,如果兩行共享一個MAX(num)呢? – Glenn