MySQL:如何基于WHERE子句结果计算SUM并用于ORDER BY排序
解决按指定日期后捐赠总额排序的支持者查询需求
嘿,这就帮你搞定这个SQL查询需求!先把你提供的捐赠数据整理成更易读的Markdown表格:
| supporterID | date | amount |
|---|---|---|
| 1 | 2018-01-01 | 100 |
| 2 | 2018-01-07 | 10 |
| 3 | 2018-01-09 | 5000 |
| 1 | 2018-02-01 | 100 |
| 2 | 2018-02-03 | 10 |
| 1 | 2018-02-10 | 100 |
| 2 | 2018-03-14 | 10 |
| 3 | 2018-03-18 | 5 |
要实现按2018年2月1日以来的捐赠总额排序的查询,你可以用下面的SQL语句:
SELECT supporterID, SUM(amount) AS total_donation_since_20180201 FROM donations WHERE date >= '2018-02-01' GROUP BY supporterID ORDER BY total_donation_since_20180201 DESC;
语句关键部分说明:
WHERE date >= '2018-02-01':精准筛选出2018年2月1日及之后的捐赠记录,排除之前的无关数据SUM(amount) AS total_donation_since_20180201:对每个支持者的符合条件的捐赠金额求和,并用别名让结果更直观GROUP BY supporterID:按支持者ID分组,确保每个支持者只生成一条汇总数据ORDER BY total_donation_since_20180201 DESC:按捐赠总额降序排列,让大额捐赠的支持者排在前面(如果需要升序,去掉DESC即可)
执行这个查询后,你会得到这样的结果:
| supporterID | total_donation_since_20180201 |
|---|---|
| 1 | 200 |
| 2 | 20 |
| 3 | 5 |
内容的提问来源于stack exchange,提问作者Simon Blackbourn
相关产品推荐
相关产品推荐

