获取两周的数据,但按 7 天的时间段分组

cch*_*ana 4 mysql

我希望运行一个查询来收集过去 14 天的结果数量,这很容易实现,如下所示:

SELECT COUNT(id) 
FROM table_name
Run Code Online (Sandbox Code Playgroud)

然后我想做的是将结果分组,以便我可以显示本周和前一周。使用WEEK()MySQL 中的选项可以让我获得前两周的数据,但按周分组可以返回 2 或 3 个结果,具体取决于结果属于一年中的哪一周:

例如:

SELECT WEEK(date_logged) as week, COUNT(id) as rows 
FROM table_name
WHERE date_logged > DATE_SUB(NOW(), INTERVAL 14 DAY) 
GROUP BY WEEK(date_logged)
Run Code Online (Sandbox Code Playgroud)

产生:

week 38: 10 result
week 39: 20 results
week 40: 3 results
Run Code Online (Sandbox Code Playgroud)

而不是:

this week: 13 results (10 from week 38 and half of week 39)
previous week: 20 results (half of week 39 and all of week 40)
Run Code Online (Sandbox Code Playgroud)

希望该数据集说明了我所追求的。

如果可能的话,我想避免在 aselect上做一个select,希望我不会太远。

ype*_*eᵀᴹ 12

    SELECT 'last week' AS week, COUNT(*) AS rows 
    FROM table_name
    WHERE date_logged >= CURDATE() - INTERVAL  6 DAY 
      AND date_logged  < CURDATE() + INTERVAL  1 DAY
  UNION ALL
    SELECT 'previous week' AS week, COUNT(*) AS rows 
    FROM table_name 
    WHERE date_logged >= CURDATE() - INTERVAL 13 DAY
      AND date_logged  < CURDATE() - INTERVAL  6 DAY ;
Run Code Online (Sandbox Code Playgroud)