Возьмем следующую таблицу:Как мне группировать только последние строки `n`?
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.
Вы выбираете день из запроса. Это все, что я знаю. –
Я не совсем понимаю, знаете ли вы о 'HAVING' clause? –
@LuisSiquot Я не вижу, как 'HAVING' получает самые последние строки' n' для данного члена ..? –