sql-server - 如何在正文中编写此要求的查询?
问题描述
我想打印每个学生创建的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);
但我没有得到预期的输出。
解决方案
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
使用左连接,您将从左表(“黑客”)中获取所有元素,并计算每个元素的挑战(如果存在)。如果count(c.challenge_id)的结果为NULL,则将其替换为 0 值
推荐阅读
- javascript - 防止 PrimeVue TabView 组件上的选项卡更改
- python - 文件被创建为 zip_folder 中的文件夹
- python - 对任意维度的任意 numpy 数组进行切片
- ios - Swift 中的 KMM 泛型:强制 KMM Any 为 Swift Any 而不是 AnyObject
- python - 使用 Python TTP 解析文本以更正 json
- javascript - 量角器/打字稿:如何验证和验证下载的文件是“.csv”并验证其内容
- wordpress - 更新 woo-commerce 购物车中的特定产品小计
- msbuild - 在 csproj 节点中获取通配符引用
- javascript - 为什么我的 JavaScript 不能在 HTML 可视代码中运行
- angular - 在 Angular 表单组中传递数据