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. Link to comment https://forums.phpfreaks.com/topic/212287-mysql-averages/ 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); Link to comment https://forums.phpfreaks.com/topic/212287-mysql-averages/#findComment-1106105 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 Link to comment https://forums.phpfreaks.com/topic/212287-mysql-averages/#findComment-1106109 Share on other sites More sharing options...
petroz Posted September 1, 2010 Share Posted September 1, 2010 Just set your ORDER BY to DESC. Link to comment https://forums.phpfreaks.com/topic/212287-mysql-averages/#findComment-1106125 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.