私は2つのテーブルを持っています:
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 |
+-----------+-----------+-----------+
なぜそれが起こるのでしょうか?そして、正しいクエリは何でしょうか?
すみません、私のミスでした。元のテーブルのデータが間違っていました。誤解を招いて本当にごめんなさい:(