SQL фильтрация по среднему - PullRequest
0 голосов
/ 26 мая 2009

У меня есть две таблицы продуктов и отзывов
Каждый продукт имеет несколько обзоров, связанных внешним ключом product_id в таблице отзывов
Кроме того, в каждом обзоре есть поле под названием «рейтинг» с десятичным значением
я хочу получить названия всех продуктов, средний рейтинг которых выше определенного порога
что-то в строках

SELECT p.name
FROM products p
INNER JOIN reviews r ON p.id = r.product_id
WHERE avg(r.rating) > 3

MySQL не позволяет мне использовать функцию avg в предложении where.
Как мне сделать что-то подобное?

1 Ответ

7 голосов
/ 26 мая 2009

используйте «имеющий»

SELECT p.name, avg(r.rating) as average
FROM products p
INNER JOIN reviews r ON p.id = r.product_id
GROUP BY p.name
HAVING avg(r.rating) > 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...