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