sql - SQL - 基于过滤器聚合列
问题描述
我的数据有一个 ID、日期和 points_earned 字段。每行代表该 ID 在该日期获得的积分。
我想创建类似的东西:
身份证| Points_Earned_January | Points_Earned_February | Points_Earned_March
结果应该是GROUP BY
ID。Points_Earned_January 应该给出SUM
该 ID 在一月份的所有 points_earned。
我怎样才能做到这一点?
解决方案
您可以使用条件聚合:
select id,
(case when date >= '2020-02-01' and date < '2020-03-01' then points else 0 end) as points_feb,
(case when date >= '2020-03-01' and date < '2020-04-01' then points else 0 end) as points_mar
from t
group by id;
推荐阅读
- json - 按两个字段分组并为每个组求和另一个
- asp.net-core - 电子邮件重置密码不起作用,但帐户确认有效.NetCore
- python - 如何向 Pandas 中的每一行广播统一的随机数?
- php - 得到“E:无法纠正问题,你拿着破损的包裹。” 使用 apt-get 在 Debian 9 上安装 php 7.4 时
- python - 如何通过从其他列中减去第一列来创建新的数据框?
- excel - 将数据透视表总计复制到下一个空单元格
- python - Python / Pyserial / Arduino 将串行数据写入 txt 文件问题
- python - 从硬件细节比较 python 性能
- python - ISO时间到python中的人类可读时间
- maven - 如何配置jooq-codegen-maven,所以我只能手动运行而不是每次编译