MySQL:如何根据WHERE子句的结果计算ORDER BY子句的SUM

时间:2018-03-21 17:13:48

标签: mysql sql

我有以下捐赠信息表:

+-------------+------------+--------+
| 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      |
+-------------+------------+--------+

我需要选择自2月1日以来的捐款总价值,然后按total值排序的支持者。忽略2月1日之前的所有捐款。

我的非执行查询是:

SELECT supporterID, sum(amount) AS total
FROM donations
WHERE date >= 2018-02-01
GROUP BY supporter_id
ORDER BY total desc
LIMIT 10

问题在于sum(amount)是根据捐款的所有计算的,而不仅仅是自2月1日以来的捐款。 supporterID 3作为最高结果返回,因为他们在1月份捐赠了5000。

结果应该是:

+-------------+-------+
| supporterID | total |
+-------------+-------+
| 1           | 200   |
| 2           | 20    |
| 3           | 5     |
+-------------+-------+

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

根据Vamsi's comment,问题是我缺少引号,而不是查询本身。

这是工作查询:

myName = 1234;