对当前月份的周内字段的总和进行分组

b5lpy0ml  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(285)

我有一张这样的table

name | count | date_of_play

其中name是varchar,count是整数,date是mysql日期。
我正在尝试按当前月份的周数整理表中的行,然后对每周的所有天数进行求和。
基本上,输出是这样的:

Week | Count
1        x
2        y
3        z
4        a

其中计数对应于该周发生的总计数。当然,可能不会总是有4周的时间来展示,因为我们不会总是在本月底。
目前,我的sql查询是

Select WEEK(`date_of_play`) Week, SUM(`count`) as Count FROM  table 
WHERE 
WEEK(date_of_play) > (WEEK(CURDATE()-4))
GROUP BY
    WEEK(`date_of_play`) ORDER by MIN(`date_of_play`)

这不会有任何结果。
感谢您的帮助!

5us2dqdw

5us2dqdw1#

你的逻辑需要修正,从一周中减去“4”。这至少会返回以下结果:

SELECT WEEK(date_of_play) as Week, SUM(count) as Count
FROM table 
WHERE WEEK(date_of_play) >= WEEK(CURDATE()) - 4
GROUP BY WEEK(date_of_play)
ORDER by MIN(date_of_play);

要获取当前月份的数据,逻辑应该更像:

SELECT WEEK(date_of_play) as Week, SUM(count) as Count
FROM table 
WHERE date_of_play >= CURDATE() - INTERVAL (1 - DAY(CURDATE())) DAY
GROUP BY WEEK(date_of_play)
ORDER by MIN(date_of_play)

相关问题