我确实尝试自己完成此操作,但对于像我这样的新手来说,查询似乎太复杂了。
在 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/