使用sql获得平均评分

时间:2014-11-27 19:38:58

标签: java sql

我有一个Java程序可以评估我数据库中的电影,我想要做的是使用sql来获得电影的平均评分,但不是所有电影的总体平均评分。例如,如果3个不同的人对同一个电影ID进行评级,以便能够获得该平均值,但该列表将有许多来自不同用户的电影评级。那么我怎么能得到不同人评价的所有电影的平均值呢?到目前为止,我只能获得整体平均值。

表格为[电影电子邮件评分]

1 个答案:

答案 0 :(得分:1)

您没有提供架构。所以我猜了两个表的列:

SELECT name, round( (film_total_ratings/number_of_ratings) , 2) as avg_rating
FROM 
( 
   SELECT COUNT(*) as number_of_ratings, film_id, 
   SUM(rating) as film_total_ratings 
   FROM  `rating` GROUP BY film_id 
) AA LEFT JOIN 
( SELECT id, name FROM `film`  ) BB ON BB.id = AA.film_id 

或者如你所提到的一个表:

SELECT FILM, (film_total_ratings/number_of_ratings) as avg_rating 
FROM( 
SELECT COUNT(*) as number_of_ratings, FILM, 
   SUM(RATING) as film_total_ratings 
   FROM  avg GROUP BY FILM 
) TMP_FILM