在一个查询中获取每周,每月,每年的数据

joh*_*ohn 0 mysql time

我有一个显示用户统计信息的页面,我想知道从表中获取每周,每月,每年和所有时间统计数据的最佳方法是在一个查询中?

目前我正在使用单独的查询来检查每个日期范围内的结果,但必须有更好的方法.例如,我想计算过去一个月,一周和一年中'votes'='1'的所有行.

nos*_*sid 5

SELECT
   user_id,
   SUM(IF(ts>CURRENT_DATE - INTERVAL 1 WEEK,votes,0)) votes_weekly,
   SUM(IF(ts>CURRENT_DATE - INTERVAL 1 MONTH,votes,0)) votes_monthly,
   SUM(IF(ts>CURRENT_DATE - INTERVAL 1 YEAR,votes,0)) votes_yearly
FROM table
WHERE ts>CURRENT_DATE - INTERVAL 1 YEAR
GROUP BY user_id;
Run Code Online (Sandbox Code Playgroud)