按日期排序,对MySQL表重复Ref_Nr的Points分组求和
嘿,我来帮你搞定这个MySQL分组求和的问题!根据你的需求,我们可以通过GROUP BY结合聚合函数和排序子句来实现。
完整的SQL查询语句
SELECT u_id, r_date, Ref_Nr, SUM(Points) AS Total_Points FROM your_table_name -- 记得替换成你实际的表名 GROUP BY u_id, r_date, Ref_Nr ORDER BY r_date DESC; -- 想要升序排列的话,把DESC改成ASC即可
语句拆解说明
- 分组与求和:
GROUP BY u_id, r_date, Ref_Nr会把这三个字段完全相同的记录归为一组,SUM(Points)则计算每组内Points的总和,用AS Total_Points给结果列起个直观的别名,方便后续查看。 - 排序:
ORDER BY r_date DESC让最终结果按日期倒序排列(最新的日期排在最前面),如果需要最早的日期在前,换成ASC就可以满足需求。
基于你提供的测试数据的预期结果
执行这条语句后,你会得到如下结果:
| u_id | r_date | Ref_Nr | Total_Points |
|---|---|---|---|
| 1 | 2018-04-11 | 3 | 3 |
| 2 | 2018-04-11 | 4 | 7 |
| 3 | 2018-04-11 | 2 | 12 |
| 1 | 2018-04-10 | 3 | 8 |
| 1 | 2018-04-10 | 4 | 4 |
| 2 | 2018-04-10 | 3 | 8 |
| 3 | 2018-04-10 | 4 | 4 |
只要把语句里的your_table_name替换成你实际使用的表名,就能直接运行啦!
内容的提问来源于stack exchange,提问作者Mac D
相关产品推荐
相关产品推荐

