我试图在一个查询中执行两个不同的SUM.
user points date_achieved
-----------------------------
Foo 10 2000-01-01
Foo 20 2011-11-18
Bar 10 2000-01-01
Bar 20 2011-11-15
Bar 30 2011-11-18
Run Code Online (Sandbox Code Playgroud)
1)总积分
SELECT user, SUM(points) AS points_total
FROM myTable
GROUP BY user
Run Code Online (Sandbox Code Playgroud)
2)过去一个月内积累的积分
SELECT user, SUM(points) AS points_month
FROM myTable
WHERE date_achieved >= CURRENT_DATE - INTERVAL 1 MONTH
GROUP BY user
Run Code Online (Sandbox Code Playgroud)
使用单个查询实现此目的的最佳方法是什么?
非常感谢.
只需使用案例陈述即可在符合条件时计算点数.
SELECT
user,
SUM(points) AS points,
SUM(case
when date_achieved >= (CURRENT_DATE - INTERVAL 1 MONTH)
THEN points
else 0 END) points_last_Month
FROM myTable
GROUP BY user
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |