У меня есть таблица в mysql с двумя полями:
DATA | PAGE
2020-07-30 21:44:08 | abc
2020-07-31 20:14:18 | abc
2020-08-02 12:23:08 | xyz
2020-08-04 10:21:27 | abc
2020-08-04 12:54:32 | def
2020-08-04 15:41:44 | abc
Я хотел бы запросить таблицу для страницы «ab c» и получить сумму ежедневных просмотров с последнего 7 дней и вернуть ноль, если на странице нет просмотров:
DATA | VIEWS
2020-07-29 | 0
2020-07-30 | 1
2020-07-31 | 1
2020-08-01 | 0
2020-08-02 | 0
2020-08-03 | 0
2020-08-04 | 2
После некоторых проб и ошибок, адаптирующих некоторые запросы, которые я нашел здесь, я достиг этой версии, которая возвращает те результаты, которые я хочу, но я не думаю это идеально, и ограничение использования календаря не требуется.
SELECT DATE_FORMAT(data, "%Y-%m-%d") as data, count(*)-1 as views
FROM (
SELECT date(data) as data FROM visitas as t1 where page like "abc"
UNION ALL
SELECT curdate() - interval a day AS data
FROM (
SELECT 0 as a UNION
SELECT 1 UNION
SELECT 2 UNION
SELECT 3 UNION
SELECT 4 UNION
SELECT 5 UNION
SELECT 6
) as t2
) as t3 GROUP BY data
ORDER BY data DESC
LIMIT 7
Можно ли улучшить этот запрос?
Спасибо