2014-01-15 50 views
0

我真的试图自己做这件事,但似乎有像我这样的新手过于复杂的查询。MySQL多行,分组多个值

上dgpl_se_bets1x2表I具有值:

id, id_mat, prev, note, datetime 

是什么的这些重​​要的:

id_mat =匹配ID

先前=赌注放置在由用户,的值是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| 
+------------+---+-+---+ 

回答

1

试试这个试试

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; 
+0

这正是我在找的东西。我觉得这很难。非常感谢帕特里克:) – Yuha