I want to make a SQL query which finds the catagory of awards for movies which has the highest average rating, so for a group of movies which have won a particular award, if they have a higher average rating than any other awards group of movies then it will be returned.
I tried something like this:
SELECT MAX(AVG(m."Rating"))
FROM awards a, movies m
WHERE a."Title" = m."Title"
GROUP BY a."Award"
but it seems that aggregate functions cannot be nested. How can I call the max function on the average ratings for each catagory?
You can't nest aggregate functions, and must instead place the inner one in a subquery.
You can nest any number of the window functions LEAD and LAG, but you cannot nest more than one aggregate function within another aggregate function.
In relational databases, a nested table is a table that is embedded within another table. Individual elements can be inserted, updated, and deleted in a nested table.
If you are only interested in the value itself, the following should do it:
SELECT MAX(avg_rating)
FROM (
SELECT AVG(m."Rating") as avg_rating
FROM awards a, movies m
WHERE a."Title" = m."Title"
GROUP BY a."Award"
) t
Otherwise Adrian's solution is better.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With