У меня есть две таблицы:MySQL усреднением присоединился таблицу
salon_ranks
:
+-----------+-----------+-----------+-----------+
| salon_id |category_id| user_id | rank |
+-----------+-----------+-----------+-----------+
| 10 | 1 | 999 | 1 |
| 10 | 2 | 999 | 1 |
| 10 | 1 | 888 | 5 |
| 10 | 2 | 888 | 5 |
+-----------+-----------+-----------+-----------+
categories
:
+------+-----------+
| id | name |
+------+-----------+
| 1 | prices |
| 2 | service |
+------+-----------+
Я пытаюсь эффективно получить что-то, что выглядит следующим образом:
+-----------+-----------+-----------+
| salon_id |category_id| AVG(rank) |
+-----------+-----------+-----------+
| 10 | 1 | 3 |
| 10 | 2 | 3 |
+-----------+-----------+-----------+
Что сделал больше смысла для меня это вопрос так:
SELECT salon_id, category_id, AVG(rank)
FROM salon_ranks
INNER JOIN categories ON category_id = id
GROUP BY salon_id, category_id
Но по какой-то причине я не получаю среднее, но получить вместо этого:
+-----------+-----------+-----------+
| salon_id |category_id| AVG(rank) |
+-----------+-----------+-----------+
| 10 | 1 | 1 |
| 10 | 2 | 5 |
+-----------+-----------+-----------+
Любая идея для почему это произойдет? И какой может быть правильный запрос?
Извините, это была моя ошибка. Я неправильно понял данные из моих исходных таблиц. Действительно извините за вводящие в заблуждение вас :(
он должен дать тыс правильное значение. http://www.sqlfiddle.com/#!2/ee5c6/1 –
Должно быть, вы не показываете нам, потому что ваш запрос в порядке. Мы не можем ответить, если вы не дадите нам действительный вопрос. – Barmar