MySQL:可以用一个查询来实现吗?
我试图在一个查询中执行两个不同的求和MySQL:可以用一个查询来实现吗?,mysql,sql,Mysql,Sql,我试图在一个查询中执行两个不同的求和 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 1) 总分 SELECT user, SUM(points) AS p
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
1) 总分
SELECT user, SUM(points) AS points_total
FROM myTable
GROUP BY user
2) 过去一个月内累积的分数
SELECT user, SUM(points) AS points_month
FROM myTable
WHERE date_achieved >= CURRENT_DATE - INTERVAL 1 MONTH
GROUP BY user
使用单个查询实现此目的的最佳方法是什么
非常感谢。只要使用一个案例陈述,当它符合您的标准时,就可以只计算分数
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
选择
用户,
总和(点数)为总点数,
总数(
案例
当达到日期>=当前日期-间隔1个月时
其他0
结束
)每月分
从myTable
按用户分组
select
user,
sum(points) as points_total,
sum(
case
when date_achieved >= current_date - interval 1 month then points
else 0
end
) as points_month
from myTable
group by user