I have two tables, as shown below. In the first table you have ids for movie bundles and the ids for the movies that are inside that bundle. 1 = Disney movie bundle, 2 = Warner Brothers movie bundle, 3 = Marvel movie bundle, 4 = X movie bundle.
In the second table you have ids for the movies and their average rating.
I was wondering how to get the rating of the bundle using the ratings of the movie.
| Movie Bundle | movie id |
|---|---|
| 1 | 1 |
| 1 | 5 |
| 1 | 7 |
| 2 | 1 |
| 2 | 2 |
| 2 | 4 |
| 2 | 6 |
| 2 | 8 |
| 3 | 10 |
| 3 | 11 |
| 4 | 11 |
| movie id | rating |
|---|---|
| 1 | 4.0000 |
| 2 | 5.0000 |
| 3 | 2.0000 |
| 4 | 3.5000 |
| 5 | 1.0000 |
| 6 | 3.0000 |
| 7 | 4.0000 |
| 8 | 5.0000 |
| 9 | 3.0000 |
| 10 | 2.0000 |
| 11 | 4.5000 |
| 13 | 5.0000 |
So the resulting table would look like:
| movie bundle | rating |
|---|---|
| 1 | 3.0000 |
| 2 | 4.1000 |
| 3 | 3.2500 |
| 4 | 4.5000 |
CodePudding user response:
GROUP BY with aggregation AVG
SELECT a.bundle_id, AVG(b.rating) rating
FROM bundles a
JOIN ratings b ON a.movie_id = b.movie_id
GROUP BY a.bundle_id
