sql - 汇总 SQL Server 中 1 列中每个值的值计数
问题描述
数据:
name | car color
-----+---------
mike | green
mike | blue
mike | red
bob | green
bob | red
tom | blue
期望的结果:
name | green count | blue count | red count
-----+-------------+------------+---------
mike | 1 | 1 | 1
bob | 1 | 0 | 1
tom | 0 | 1 | 0
我正在考虑运行几个子查询并离开加入,例如:
select name, count(*) as count blue
from table
where car color = 'blue'
ETC
谢谢
解决方案
您可以使用条件聚合:
SELECT
name,
SUM(CASE WHEN car_color = 'green' THEN 1 ELSE 0 END) green_count,
SUM(CASE WHEN car_color = 'blue' THEN 1 ELSE 0 END) blue_count,
SUM(CASE WHEN car_color = 'red' THEN 1 ELSE 0 END) red_count
FROM mytable
GROUP BY name
推荐阅读
- c - 尝试写入结构数组的元素时出现分段错误
- cron - Cron - 每个星期天,除非是每月的第一天
- eclipse-jdt - 用于测试编译 Eclipse+Maven 的 Micronaut 注释处理器不起作用
- parameters - 当我调用一个函数调用的函数比我输入的参数多时会发生什么
- sql - 只包括有字母的记录,忽略列中有数字的记录
- opengl - OpenGL:alpha-to-coverage 交叉淡入淡出
- pandas - 如何让 pandas 为交叉乘法工作
- machine-learning - 这些点在朴素贝叶斯中意味着什么?
- android - 在 Jetpack Compose 中使用自定义视图
- machine-learning - autoML 视觉缺少训练边界框