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