这是我的代码:
select
h.hacker_id, h.name,
count(c.challenge_id) as num
from
Hackers as h
join
challenges as c on h.hacker_id = c.hacker_id
where
num = max(num)
group by
h.hacker_id, h.name
order by
count(c.challenge_id) desc
我只想过滤掉其他结果并保留最大结果,但是在WHERE
子句中出现错误:
消息207,级别16,状态1,服务器WIN-ILO9GLLB9J0,第9行
无效的列名“ num”
请帮助
答案 0 :(得分:0)
我只想过滤其他结果,并保留最大计数,
我确实怀疑您确实想要tasksRef
:
TOP (1) WITH TIES
这将为您提供计数最高的记录。如果存在最重要的关系,则所有这些都会显示在结果集中。
注意:如您在此查询中所见,您可以在select top (1) with ties
h.hacker_id,
h.name,
count(c.challenge_id) as num
from Hackers as h
join challenges as c on h.hacker_id = c.hacker_id
group by h.hacker_id, h.name
order by num desc
子句中使用列别名(与order by
子句不同)。
答案 1 :(得分:0)
如果您要查找的是每个hackerid的max(num),则不需要过滤器,group by将为您完成此操作:
select h.hacker_id, h.name,count(c.challenge_id) as num
from Hackers as h
join challenges as c on h.hacker_id = c.hacker_id
group by h.hacker_id, h.name
但是您似乎只是在按照GMB的建议在寻找前1名。