如何使用子查询组合DAY组

时间:2015-11-05 09:27:03

标签: mysql

这是我的表trans:

id //  user_id  //  money    //  date
 1        1001         20    2015-11-1
 2        1001         50    2015-11-1
 3        1001         50    2015-11-2
 4        1001         50    2015-11-3
 5        1002         10    2015-11-3
 6        1002         20    2015-11-1
 7        1002         70    2015-11-1
 8        1003         80    2015-11-2
 9        1003         10    2015-11-3
10        1003         20    2015-11-3

我想输出如下:

id //  user_id    // date
 1        1001     2015-11-1
 2        1001     2015-11-2
 3        1001     2015-11-3
 4        1002     2015-11-1
 5        1002     2015-11-3
 6        1003     2015-11-2
 7        1003     2015-11-3

这意味着按照每个ID每天,每种类型和显示来汇总金钱组。 我尝试了GROUP BY DAY(日期),如:

SELECT SUM(a.money), a.user_id FROM trans a GROUP BY DAY(date);

但它每天都汇总所有钱,而不是user_id。

谢谢。

2 个答案:

答案 0 :(得分:0)

如果您想要每个用户ID的结果行,则应按其分组:

SELECT   `user_id`, `day`, SUM(money)
FROM     `trans`
GROUP BY `user_id`, `day`

答案 1 :(得分:0)

您可以按多列进行分组:

mysql> SELECT user_id, SUM(money), `date` FROM trans a GROUP BY user_id, date;
+---------+------------+------------+
| user_id | SUM(money) | date       |
+---------+------------+------------+
|    1001 |         70 | 2015-11-01 |
|    1001 |         50 | 2015-11-02 |
|    1001 |         50 | 2015-11-03 |
|    1002 |         90 | 2015-11-01 |
|    1002 |         10 | 2015-11-03 |
|    1003 |         80 | 2015-11-02 |
|    1003 |         30 | 2015-11-03 |
+---------+------------+------------+
7 rows in set (0.00 sec)