@kirill-93

Как правильно посчитать среднее количество?

Люди и записи. Люди делают записи. Нужно выбрать среднее количество записей в день за последние 5 дней.
Получается как-то так:
###
SELECT AVG(cnt) FROM (
    SELECT COUNT(*) as cnt FROM `users`
    JOIN `records` ON `records`.`user_id` = `users`.`id`
    WHERE `records`.`created_at` > NOW() - INTERVAL 5 DAY
    GROUP BY DATE(`records`.`created_at`)
) as Q1

Такой код вытаскивает записи и считает среднее количество записей, но он не учитывает, что в некоторые дни записей совсем могло не быть, и в таком случае следует считать, что записей в этот день было 0. Как решить проблему?
  • Вопрос задан
  • 383 просмотра
Решения вопроса 3
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
записей в этот день было 0. Как решить проблему?

на php или чем вы там кодите решать это надо.

На mysql это длинное костылеориентированное решение.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Как решить проблему?
Получить кол-во записей для нужной даты заранее и определить: будет ли она участвовать в дальнейшем в подсчёте средних значений или нет.
Ответ написан
@Sayonji
Вы хотите посчитать среднее от пяти чисел. Это значит сложить их и разделить на 5, то есть
SELECT COUNT(*) / 5 FROM `users`
JOIN `records` ON `records`.`user_id` = `users`.`id`
WHERE `records`.`created_at` > NOW() - INTERVAL 5 DAY
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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