c_pattle Posted September 1, 2010 Share Posted September 1, 2010 This may be hard to explain so bear with me. I have a table called "ratings" which has lots of different ratings in it for different images. The structure for this table is "picture number", "rating id", "rating". What I want to achieve is to get a data set from the table of the top 3 rated pictures. However to do this I'm going to first have to take an average of all of the ratings for each picture. I was just wondering what the best way to do this is. Thanks for any help. Quote Link to comment Share on other sites More sharing options...
c_pattle Posted September 1, 2010 Author Share Posted September 1, 2010 Forget that. At the moment I have this which seems to work. However this gives me the results with the lowest first. How can I change that to make it the highest first? select article_number, avg(score) from ratings group by article_number order by avg(score); Quote Link to comment Share on other sites More sharing options...
petroz Posted September 1, 2010 Share Posted September 1, 2010 This should work. SELECT DISTINCT(image_id), AVG(rating) FROM `image_ratings` GROUP BY `image_id` ORDER BY AVG(rating) DESC LIMIT 3 Quote Link to comment Share on other sites More sharing options...
petroz Posted September 1, 2010 Share Posted September 1, 2010 Just set your ORDER BY to DESC. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.