Mysql 如何按天使用子查询合并组
这是我的桌子:Mysql 如何按天使用子查询合并组,mysql,Mysql,这是我的桌子: 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
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显示。
我尝试了按天分组(日期),如:
但是它每天把所有的钱加起来,而不是按用户id
谢谢。如果您想要每个用户id的结果行,您应该按它分组:
SELECT `user_id`, `day`, SUM(money)
FROM `trans`
GROUP BY `user_id`, `day`
如果希望每个用户id有一个结果行,则应按其分组:
SELECT `user_id`, `day`, SUM(money)
FROM `trans`
GROUP BY `user_id`, `day`
您可以按多个列进行分组:
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)
您可以按多个列进行分组:
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)