我陷入了一些问题。问题有两个表,即黑客和挑战。 这里是架构:MySQL:根据指定的条件排除一些结果
Hackers(hacker_id: int, name string)
Challenges(challenge_id: int, hacker_id int)
我想编写一个查询打印hacker_id,名称,以及每个学生带来了挑战总数。按降序排列挑战总数。如果不止一名学生创建了相同数量的挑战,则按hacker_id对结果进行排序。如果不止一名学生创造了相同数量的挑战,并且计数小于创建的最大挑战数量,则将这些学生排除在结果之外。
这里是我的查询:
select hackers.hacker_id ,
hackers.name ,
count(challenges.challenge_id) as challenges_created
from
hackers left join challenges
on
hackers.hacker_id = challenges.hacker_id
having
count(challenges_created) >= max(challenges_created)
order by challenges_created desc, hackers.hacker_id asc
我得到错误的输出! 请告诉我我错了!
样品输入:
Sample Output:
21283 Angela 6
88255 Patrick 5
96196 Lisa 1
'> = max'没有什么意义。根据定义,max()返回集合中的最大值,所以没有其他任何值可能比这个值大。 –
那么我应该如何排除那些数量大于2但小于最大值的条目(问题的最后一行) –
请至少作一个一致的句子:排序*您的*结果...:它看起来像一个学生练习。 – DenisGL