如何仅对最后 `n` 行进行分组?

How do I group only the last `n` rows?

采取以下table:

id - member_id - day

0      1         1
1      1         1
2      1         2
3      2         2
4      1         3
5      2         3
6      2         3
7      1         3
8      1         3
9      2         3

假设我想做类似的事情:

SELECT `day`,
    COUNT(`id`) AS `count`
FROM `table`
WHERE `member_id` = 1
GROUP BY `day`
ORDER BY `day` DESC
LIMIT 5

我希望得到这样的结果:

day - count
3     3
2     1
1     1

请注意第 1 天的计数如何减半,因为只有该成员的最近五行被分组。相反,我得到最后五个组,按天排序。

如何仅将最近的 n 行与 WHERE 条件分组?

实际上,我想使用 WHERE,然后是 LIMIT,然后才是 GROUP。

我想你想用 limit:

的子查询
SELECT `day`, COUNT(`id`) AS `count`
FROM (SELECT t.*
      FROM `table` t
      WHERE `member_id` = 1
      ORDER BY `day` DESC
      LIMIT 5
     ) t
GROUP BY `day`
ORDER BY `day` DESC;