mysql - 如何在 MySQL 中获取每个玩家的半个世纪、世纪和双百的数量

标签 mysql group-by

我有这种格式的表格

id| name | types |
_________________
 1   sachin   100
 2   virat    50
 3   sachin   50
 4   sachin   50
 5   sachin   200
 6   virat    100
 7   virat    200

我现在想要得到的结果是这样的

 name   | num of 50 |num of 100 |num of 200
 sachin |    2      |    1      | 1
 virat  |    1      |    1      | 1

到达这里的正确方法是什么?? 我尝试使用分组依据。但是我没有到那里

有什么帮助吗?

谢谢

最佳答案

您还可以依赖 MySQL bool 表达式。

SELECT
    name,
    SUM(types = 50) as num_50,
    SUM(types = 100) as num_100,
    SUM(types = 200) as num_200
FROM yourtable
GROUP BY name

注意:

由于 MySQL bool 表达式解析为 0/1,因此您可以在 SUM() 中使用它

SUM(a=b) 仅当 a 等于 b 时返回 1

Working demo

更多:

如果您使用@JPG 的回答中提到的 COUNT,请记住 COUNT 的以下微妙之处

关于 COUNT 的一些微妙之处:

SELECT COUNT(0);   Result: 1

SELECT COUNT(-1);  Result: 1

SELECT COUNT(NULL); Result: 0

SELECT COUNT(71); Result: 1

SQL FIDDLE

关于mysql - 如何在 MySQL 中获取每个玩家的半个世纪、世纪和双百的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38843548/

相关文章:

mysql - 使用 MySQL 多次选择同一列

php - 为每个用户插入一行 mysql

python - 自动对 pandas 数据框中具有相似名称的多个列进行分组

sql - 在DolphinDB中,如何使用ols函数基于表计算股票剩余 yield ?

php - 获取解码的 JSON 数据时不断收到 "Array"?

mysql - 插入或更新存储过程

php - 查询和变量发布

mysql - SELECT 和 GROUP BY 月有效

python - Pandas 按组聚合和列排序

MySql:在一个表/ View 上使用 GROUP BY 子句获取有限结果