我有以下表格: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