Public feed
#894294
-- 4. Get a listing of albums, ordered by their total ratings. The rating of an album is equal to the sum of the total ratings of the songs that it contains. In turn, the total rating of a song is equal to the sum of its ratings. (Use 4 for the highest possible individual rating and 1 for the lowest.)
SELECT soong.albumtitle AS "Album Title", SUM(songs.sum) AS "Total Album Rating"
FROM Song soong, (
(SELECT tsratings.songtitle, SUM(tsratings.thesong)
FROM Song soong, (
(Select SUM(1) AS thesong, sr1.songtitle
FROM SongRating sr1, Song s1
WHERE sr1.songrating='it sucks!' AND s1.songtitle=sr1.songtitle
GROUP BY sr1.songtitle)
UNION
(Select SUM(2) AS thesong, sr1.songtitle
FROM SongRating sr1, Song s1
WHERE sr1.songrating='bad' AND s1.songtitle=sr1.songtitle
GROUP BY sr1.songtitle)
UNION
(Select SUM(3) AS thesong, sr1.songtitle
FROM SongRating sr1, Song s1
WHERE sr1.songrating='good' AND s1.songtitle=sr1.songtitle
GROUP BY sr1.songtitle)
UNION
(Select SUM(4) AS thesong, sr1.songtitle
FROM SongRating sr1, Song s1
WHERE sr1.songrating='amazing!' AND s1.songtitle=sr1.songtitle
GROUP BY sr1.songtitle))AS tsratings
WHERE tsratings.songtitle=soong.songtitle
GROUP BY tsratings.songtitle
ORDER BY SUM(tsratings.thesong) DESC)) AS songs
WHERE songs.songtitle=soong.songtitle
GROUP BY soong.albumtitle
ORDER BY SUM(songs.sum) DESC;