【发布时间】:2016-12-31 11:20:47
【问题描述】:
编写查询以打印hacker_id、姓名和每个学生创建的挑战总数。按挑战总数降序排列您的结果。如果多个学生创建了相同数量的挑战,则按hacker_id 对结果进行排序。如果多个学生创建了相同数量的挑战,并且计数小于创建的最大挑战数量,则将这些学生排除在结果之外。
我还附上了各个表格的图片
表黑客:
hacker_id name
5077 Rose
21283 Angela
62743 Frank
88255 Patrick
96196 Lisa
表挑战:
challenge_id hacker_id
61654 5077
58302 21283
40587 88255
29477 5077
1220 21283
69514 21283
46561 62743
58077 62743
18483 88255
76766 21283
52382 5077
74467 21283
33625 96196
26053 88255
42665 62743
12859 62743
70094 21283
34599 88255
54680 88255
61881 5077
所以,到目前为止,我已经做到了
SELECT c.hacker_id, h.name, COUNT(c.challenge_id) AS challenge_count
FROM Challenges c LEFT JOIN Hackers h on c.hacker_id = h.hacker_id
GROUP by 1,c.hacker_id HAVING challenge_count >=
MAX(challenge_count) ORDER BY challenge_count DESC ,c.hacker_id DESC;
但没有得到预期的输出。我的输出
我需要从输出中排除重复的结果,例如应排除具有相同挑战数量的黑客。
【问题讨论】:
-
那么.. 这里应该排除谁?
-
如果挑战次数小于最大值,应排除挑战次数相同的黑客。如果两个黑客的挑战次数相同,并且是最大值,则需要包括两个黑客
-
@sagi 至少他是一致的:-)
-
@TimBiegeleisen Lol,很好理解,我会为此投票赞成你:)