Sql 错误:聚合可能不会出现在WHERE子句中
我正在尝试获取列的最大值:Sql 错误:聚合可能不会出现在WHERE子句中,sql,sql-server,Sql,Sql Server,我正在尝试获取列的最大值: select * from ( select col1, count(*) as cnt from talbe1 group by col1 ) dt where cnt = max(cnt) 我试图得到准确的值,结果是: where cnt = 5 或 这还可以,那么第一个查询有什么问题 编辑:我放在那里的数字(5,3)是完全随机的,我想得到cnt的最大数量。聚合子句必须放在HAVING部分。但是,这无法按原样处理您的查询。你可能想做的是: select
select * from
( select col1, count(*) as cnt from talbe1
group by col1
) dt
where cnt = max(cnt)
我试图得到准确的值,结果是:
where cnt = 5
或
这还可以,那么第一个查询有什么问题
编辑:我放在那里的数字(5,3)是完全随机的,我想得到cnt的最大数量。聚合子句必须放在
HAVING
部分。但是,这无法按原样处理您的查询。你可能想做的是:
select top 1 col1, count(*) as cnt
from talbe1
group by col1
order by count(*) desc
聚合子句必须放在
HAVING
部分。但是,这无法按原样处理您的查询。你可能想做的是:
select top 1 col1, count(*) as cnt
from talbe1
group by col1
order by count(*) desc
您可以使用
HAVING
子句来实现这一点。例如,如果要获取cnt=3
记录
Select col1, count(*) as cnt from talbe1
Group by col1
Having count(*)=3
如果您想获得MAX(cnt)
您可以使用
HAVING
子句来实现这一点。例如,如果要获取cnt=3
记录
Select col1, count(*) as cnt from talbe1
Group by col1
Having count(*)=3
如果您想获得MAX(cnt)
我找到了一个解决方案,这很简单:(我应该更加专注) 我找到了一个解决方案,
这很简单:(我应该更加专注) 这个查询怎么样:
select * from
(
select
col1,
count(*) as cnt,
RANK() OVER(ORDER BY count(*) DESC) AS ran
from talbe1
group by col1
) dt
where ran=1
这个查询怎么样:
select * from
(
select
col1,
count(*) as cnt,
RANK() OVER(ORDER BY count(*) DESC) AS ran
from talbe1
group by col1
) dt
where ran=1
这只是返回3个计数而不是最大值???@Star我想这是他根据OPNo试图得到的结果我是OP,对不起,也许我没有回答好我的问题,无论如何,谢谢。@Star:那么,你投票否决了我的困惑并帮助了你?伟大的感谢不是关于投票,而是关于其他答案,这些答案给出了需要的结果,与你的答案不一致,从而获得了更多的选票。澄清一下,不要难过。这只是返回3个计数而不是最大值???@Star我想这就是他根据OPNo试图得到的东西我是OP,对不起,也许我没有回答好我的问题,无论如何,谢谢。@Star:那么,你投票否决了我的困惑并帮助了你?伟大的感谢不是关于投票,而是关于其他答案,这些答案给出了需要的结果,与你的答案不一致,从而获得了更多的选票。只是不要难过。