MySQL 多行,对多个值进行分组

标签 mysql sql

我确实尝试自己完成此操作,但对于像我这样的新手来说,查询似乎太复杂了。

在 dgpl_se_bets1x2 表上,我有以下值:

id, id_mat, prev, note, datetime

其中重要的是:

id_mat = 匹配 ID

prev = 用户下注,值为 1、x 或 2。

我想打印有关下注的统计信息,例如以下几行:

+--+------+----+----+-------------------+
|id|id_mat|prev|note|datetime           |
+--+------+----+----+-------------------+
|6 |442   |2   |1   |2014-01-03 11:04:08|
+--+------+----+----+-------------------+
|5 |442   |1   |1   |2014-01-03 11:04:08|
+--+------+----+----+-------------------+
|5 |449   |1   |1   |2014-01-02 16:40:28|
+--+------+----+----+-------------------+
|6 |449   |1   |0   |2014-01-02 16:40:28|
+--+------+----+----+-------------------+
|7 |442   |2   |0   |2014-01-03 11:04:08|
+--+------+----+----+-------------------+
|8 |442   |2   |1   |2014-01-03 11:04:08|
+--+------+----+----+-------------------+
|7 |636   |2   |0   |2014-01-03 15:46:34|
+--+------+----+----+-------------------+

所以有匹配项 5、6、7 和 8。 我想从这些数据中打印出如下内容:

+------------+-+-+-+
|Match Number|1|x|2|
+------------+-+-+-+
|5           |2|0|0|
+------------+-+-+-+
|6           |1|0|1|
+------------+-+-+-+
|7           |0|0|2|
+------------+-+-+-+
|8           |0|0|1|
+------------+-+-+-+

或者更好的是,用百分比:

+------------+---+-+---+
|Match Number|1  |x|2  |
+------------+---+-+---+
|5           |100|0|0  |
+------------+---+-+---+
|6           |50 |0|50 |
+------------+---+-+---+
|7           |0  |0|100|
+------------+---+-+---+
|8           |0  |0|100|
+------------+---+-+---+

最佳答案

尝试一下

SELECT id_mat,
    (SUM(prev='1')/COUNT(*))*100 AS prev1,
    (SUM(prev='x')/COUNT(*))*100 AS prevX,
    (SUM(prev='2')/COUNT(*))*100 AS prev2
FROM dgpl_se_bets1x2
GROUP BY id_mat;

关于MySQL 多行,对多个值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147973/

相关文章:

MySQL 错误代码 : 1193. 未知系统变量

php - MySQL 计算一段时间内共享至少 3 列中的 1 列的条目数

sql - 如何在没有 pk 的情况下循环访问存储过程中的临时表

sql - 来自 PostgreSQL jsonb 数组的值查询

php - 避免 MySQL 中的重复

php - 多个网站可以使用相同的主页和相同的数据库,但不需要更改url?

php - Laravel 框架错误 : SQLSTATE[42000]: Syntax error or access violation: 1064

php - 获取具有该行最大值的列和行

java - Hibernate 时间标准 > 0

mysql - 如何根据给定查询编写优化查询?