技术求助:如何按id和date聚合数据集行并求和
按ID和日期分组聚合的SQL解决方案
原始数据集
| id | activeMin | sleepHr | date |
|---|---|---|---|
| 1 | 1 | 04 | 2016/04/19 |
| 1 | 1 | 03 | 2016/04/19 |
| 1 | 1 | 05 | 2016/04/14 |
| 1 | 1 | 05 | 2016/04/14 |
| 2 | 1 | 04 | 2016/04/19 |
| 2 | 1 | 03 | 2016/04/19 |
| 2 | 1 | 05 | 2016/04/14 |
| 2 | 1 | 05 | 2016/04/14 |
原SQL的问题
你当前的GROUP BY子句仅指定了id,这会导致所有同ID的行被合并到一组,不管日期是否相同,无法实现按id+date双重分组的需求。
正确的SQL语句
SELECT id, date, SUM(activeMin) AS total_active_min, SUM(sleepHr) AS total_sleep_hr FROM your_table_name GROUP BY id, date;
这条SQL的核心是在GROUP BY中同时指定id和date,这样数据库会将id相同且date相同的行归为一组,再对每组的activeMin和sleepHr分别求和。
预期查询结果
| id | date | total_active_min | total_sleep_hr |
|---|---|---|---|
| 1 | 2016/04/19 | 2 | 7 |
| 1 | 2016/04/14 | 2 | 10 |
| 2 | 2016/04/19 | 2 | 7 |
| 2 | 2016/04/14 | 2 | 10 |
内容的提问来源于stack exchange,提问作者Avasquez
相关产品推荐
相关产品推荐

