записи за последние три (существующие) дня
вчера, позавчера, и два дня назад
но например если вчера не было записей - то и три дня назад
если неделю не было записей - то три дня неделю назад, и пр
по факту для этого нужна группировка
но если сначала сделать группировку всех записей по дате, а потом уже запрашивать записи за указанные даты
то у нас получается дорогой запрос группировки всей таблицы, хотя нам нужны записи только за три дня - это гораздо меньший объем данных - можно ли как-то оптимальнее это сделать?
Ни черта не понимаю в оконных функциях, но возможно, можно насчитывать для записей "число дней" и по этому полю потом ограничить.
да, я тоже думал пойти копать в этом направлении оконные функции, но тоже опыта с ними не так много
По-моему, оно того не стоит. Взять последнюю запись. Отнять сутки и опять найти последнюю. Повторить три два раза и спокойно дальше селектить.
select distinct date_trunc( 'day', t_date ) order by 1 limit 3;
запись же не одна в день этим запросом я возьму просто три последние записи, и они скорее всего будут за один и тот же день
Похоже что вы правы в данном случае, и так будет действительно проще всего Разве что думаю это запихнуть в функцию что бы сделать это за одно обращение к БД
Обсуждают сегодня