Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

mysql avg group

5.3K
09 марта 2012 года
Прим Палвер
25 / / 07.02.2008
Правилен ли запрос?
Суть такова: есть две таблицы. В одной данные игры. В другой - рейтинг.
Запрос объединяет таблицы и пытается высчитать средний балл по каждой игре.
 
Код:
select `games`.`id` as id, `games`.`name` as name, AVG(`gamesrating`.`rating`) as rating
from `games` left join `gamesrating`
on `games`.`id`=`gamesrating`.`subject`
group by rating


Таблица gamesrating:
id - просто аутоинкремент, без функциональной нагрузки,
subject - соответствует id игры
rating - оценка игры одним из юзеров
user - соответствует id юзера, поставившего оценку

Соответственно, одной игре может быть несколько оценок от разных игроков. [Если бы оценка была одним числом, какой мне смысл выносить её в другую таблицу?] А мне нужно вычислить одним запросом средний рейтинг каждой игры.
274
09 марта 2012 года
Lone Wolf
1.3K / / 26.11.2006
групировать по игре надо, а не по рейтингу.
72K
09 марта 2012 года
CorsaiR
59 / / 07.03.2012
Группировать нужно по играм:

 
Код:
SELECT `games`.`id` AS id, `games`.`name` AS name, AVG(`gamesrating`.`rating`) AS rating
FROM `games` LEFT JOIN `gamesrating`
ON `games`.`id`=`gamesrating`.`subject`
GROUP BY 1, 2

5.3K
09 марта 2012 года
Прим Палвер
25 / / 07.02.2008
Цитата: CorsaiR
Группировать нужно по играм

Думал уже спорить и доказывать...
Точно!
А в остальном должно работать?
Не будет выдавать все строки, возникшие из-за соединения таблиц?

274
09 марта 2012 года
Lone Wolf
1.3K / / 26.11.2006
нет, НО я бы добавил группировку не просто id-игры, но и по имени. Мускулю - вобщем-то всеранво, но вот оракл или mssql не пропустят такой запрос.
Ибо в селекте не должно быть полей, которые не участвую в групБай, или агрегативынх ф-циях
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог