sql - 使用 Group By 根据 2 列计算行数
问题描述
我有一个 3 列的数据库表
RecordID Deleted CardHolderID
1963 1 9
4601 1 9
6996 0 9
1532 1 11
1529 0 20
我想要一个 sql 查询来输出按 CardHolderID 分组的 Deleted 列的行总和。
但是下面的查询为 CardHolderID 输出 2 列
select c.CardHolderID, c.Deleted, COUNT(*) as Sum
from Card c
group by c.Deleted, c.CardHolderID
CardHolderID Deleted Sum
9 0 1
9 1 2
20 0 1
11 1 1
我想将 2 列包括为Deleted0(Deleted 列等于 0 的行数)和Deleted1(Deleted 列等于 1 的行数)
CardHolderID Deleted0 Deleted1
9 1 2
20 1 0
11 1 1
对于这样的结果,SQL 查询应该如何?
亲切的问候
解决方案
GROUP BY
CardHolderID 单独。
用于SUM(Deleted)
计算 1。
用于SUM(1-deleted)
计算 0。
select c.CardHolderID, sum(1-c.deleted) deleted0, sum(c.Deleted) deleted1
from Card c
group by c.CardHolderID
推荐阅读
- visual-studio-code - 将现有代码推送到新行时如何停止 VSCode 缩进?
- azure - 如何在 Azure Pipelines 中手动触发单个作业?
- asp.net-mvc - MVC 中的模型状态验证
- python - Kivy,提交按钮时调用下拉列表
- reactjs - 如何将中间的 Grid 项目从 3 个项目向下放置,将第一个和第三个项目放在顶部?
- php - 如果条件匹配,则销毁数组
- php - PHP计算从今天开始的过去日期
- python - 类型错误:'在
' 需要字符串作为左操作数,而不是列表 (discord.py) - directions - HERE 地图方向限制
- php - DomCrawler 没有带上所有的链接?