【发布时间】:2025-12-28 01:50:06
【问题描述】:
对于下面的sql命令
select h.hacker_id
,h.name
,challenges_created
from hackers h
inner join (
select hacker_id
,count(*) as challenges_created /* line 1 */
from challenges
group by hacker_id
order by 2 desc
) tmp on h.hacker_id = tmp.hacker_id
order by challenges_created desc
,h.hacker_id;
到目前为止还不错,但是
一旦我尝试将max(count(*)) as maximum 添加到第 1 行,它就会给出错误:
不是单组群功能
这是它给出错误的代码:
select h.hacker_id
,h.name
,challenges_created
from hackers h
inner join (
select hacker_id
,count(*) as challenges_created
,max(count(*)) as maximum
from challenges
group by hacker_id
) tmp on h.hacker_id = tmp.hacker_id
order by challenges_created desc
,h.hacker_id;
我基本上对获得最大计数感兴趣,即到目前为止challenges created 的最大数量。
我是 sql 新手,请提供帮助和义务。提前致谢。是的,当然!我知道最近有人问过很多这样的问题,但没有一个符合我的情况,这就是我再次问这个问题的原因。
【问题讨论】:
-
请添加表结构,5-6 条记录作为示例数据和您在问题中期望的输出。
-
当我在 SQL Server 中尝试此操作时,我收到错误
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.所以我认为这与您所看到的类似。我认为您必须添加另一个Join才能获得Max(Count(*))。 -
@WEI_DBA:在这个查询本身中不可能实现它吗?如果我可以在 sql 中使用像
top这样的东西怎么办? oracle中也有类似top的东西吗?
标签: sql oracle count group-by max