Как расчитать среднее значение в базе данных?

Как можно модифицировать этот код, чтобы вычислить среднюю оценку для каждой книги, учитывая только активные отзывы? Текущий код не учитывает состояние active, что нужно изменить для получения правильных средних оценок?
  • 14 декабря 2023 г. 14:37
Ответы на вопрос 2
Для расчета среднего значения в базе данных, можно использовать SQL-запрос с функцией AVG(). Вот пример запроса:

SELECT AVG(column_name) FROM table_name;

Где column_name - название столбца с оценками, а table_name - название таблицы, где содержится эта информация.

Чтобы модифицировать код для вычисления средней оценки для каждой книги, учитывая только активные отзывы, нужно добавить условие WHERE для проверки состояния "active". Например, если у вас есть таблица "reviews" с полями "book_id", "rating" и "active", код может выглядеть так:

SELECT book_id, AVG(rating) AS average_rating
FROM reviews
WHERE active = 1
GROUP BY book_id;

В этом запросе мы выбираем book_id и среднюю оценку (под именем "average_rating") из таблицы "reviews", где active = 1. Затем мы группируем результаты по book_id.

Таким образом, этот запрос вернет среднюю оценку для каждой активной книги в базе данных.
$books = Book::query()
            ->where('active', true)
            ->withAvg(
                  ['reviews' => fn ($query) => $query->where('active', true)],
                  'grade'
            )
            ->get();
Похожие вопросы