@Fruit_Fellow

Вывод количества данных из бд за определенный промежуток времени?

Доброго времени суток.
Как создать правильно запрос к БД msql, чтобы получить количество данных за каждый сутки, за последние 7 дней.
В бд каждый день добавляются данные (посты) с датой, нужно вывести их количество, типа
11.01.2018 - 10 шт
12.01.2018 - 8 шт
13.01.2018 - 15 шт
и т.д. за 7 дней.
В интернете так ничего подобного не нашёл, или неправильно ищу ...
Желательно подробнее, плохо разбираюсь в этом(
Заранее большое спасибо.
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 2
rim89
@rim89
программист-велосипедист
попробовать как то так
SELECT
(select count(post_id) from oc_product WHERE date_added = adddate(NOW(), interval - 1 day) ) AS `day - 1`,
(select count(post_id) from oc_product WHERE date_added = adddate(NOW(), interval - 2 day) ) AS `day - 2`
...
Ответ написан
Комментировать
@bioGavs
Ну в лоб так, если взять последние 7 дней у которых есть посты то
SELECT DATE_FORMAT(`date`, '%Y-%m-%d') AS my_date, count(id) FROM posts GROUP BY my_date ORDER BY `date` DESC LIMIT 7


а если взять 7 дней с учетом, что в какой то день не было постов, то как то так

select DATE_FORMAT(`date`, '%Y-%m-%d') AS my_date, count(id) FROM posts WHERE my_date IN (
  DATE_FORMAT(NOW(), '%Y-%m-%d'),
  DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()) - 1 * 24 * 60 * 60), '%Y-%m-%d'),
  DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()) - 2 * 24 * 60 * 60), '%Y-%m-%d'),
  DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()) - 3 * 24 * 60 * 60), '%Y-%m-%d'),
  DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()) - 4 * 24 * 60 * 60), '%Y-%m-%d'),
  DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()) - 5 * 24 * 60 * 60), '%Y-%m-%d'),
  DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()) - 6 * 24 * 60 * 60), '%Y-%m-%d')
) GROUP BY my_date
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы