我想打印每个学生创建的挑战的hacker_id、名称和总数。按挑战总数降序对结果排序。如果多个学生创建了相同数量的挑战,则按hacker_id对结果进行排序。如果多个学生创建了相同数量的挑战,并且计数小于创建的最大挑战数量,则从结果中排除这些学生。
黑客表

挑战表

我已经尝试过这个查询
SELECT b.hacker_id
,a.name
,count(b.hacker_id)
FROM hackers AS a
INNER JOIN challenges AS b ON b.hacker_id = a.hacker_id
GROUP BY b.hacker_id
,a.name
ORDER BY count(b.hacker_id);但是我没有得到预期的输出。
发布于 2020-02-06 19:31:38
SELECT a.hacker_id, ISNULL(count(c.challenge_id), 0)
FROM hackers a
LEFT JOIN challenges c ON c.hacker_id = a.hacker.id
group by a.hacker_id使用left join,您将从左表(“黑客”)中获取所有元素,并计算每个元素的挑战(如果存在)。如果count(c.challenge_id)的结果将为NULL,则该值将被替换为0
https://stackoverflow.com/questions/60093947
复制相似问题