我有一张表number
,如下所示:
num
---
8
8
3
3
1
6
4
我想找出只出现一次的最大数字。我有这个问题:
select max(num) from number group by num having count(*)=1
它返回:
{"headers": ["max(num)"], "values": [[1], [4], [6]]}
这背后的原因是什么?
答案 0 :(得分:2)
使用
select max(num) from number group by num having count(*)=1
您正在使用group by num,因此group by num的max(num)与num
相同所以你得到每个数字(*)= 1
如果你需要最大值,你应该使用
select max(num) from
( select num
from number
group by num
having count(*) = 1 ) t
答案 1 :(得分:1)
由max()
子句确定的聚合函数(例如group by
)将应用于每个组。由于您按数值对数字进行分组,因此查询会在每个组中找到最大值,这恰好是相同的数字。
要解决此问题,您可以使用子查询,或以降序排序,同时将行数限制为1。
答案 2 :(得分:1)
你可以这样做:
SELECT TOP 1 MAX(num)
FROM number
GROUP BY num
HAVING COUNT(num) = 1
ORDER BY num DESC
我希望我有所帮助。