我当前电影数据库的公平评级
fair rating for my current movie database
好的,希望我最后一次 post 关于我正在尝试编写的电影评级系统。感谢用户 Asaph 帮助我制作了前 5 部刺伤电影。这是我的数据库布局:
ID | UserID | Rating | TMDB | TYPE
-----------------------------------
1 34 6 432 2
-----------------------------------
2 34 9 432 3
-----------------------------------
3 44 9 468 2
并使用这个 sql 我可以列出最热门的血腥电影(类型 2)
sql SELECT `tmdb`, AVG(rating) AS avg_rating
FROM `tbl_rating`
WHERE `type`= :type
GROUP BY `tmdb`
ORDER BY avg_rating DESC
LIMIT 5
现在我想知道有什么方法可以让我的电影结果更公平?
例如,movie123 可能有 5 票,平均票数为 7,而 movie456 可能只有 1 票,但如果超过 7,它将位于列表的顶部。我怎样才能使这更公平?也许以某种方式在组中做最少的行数?或任何其他方式?
再一次,任何帮助都很棒!
好的,我想这就是我想要做的:)
$sql = 'SELECT `tmdb`, AVG(rate) AS avg_rating, COUNT(rate) AS min_count FROM `tbl_rating` WHERE `type`= :type GROUP BY `tmdb` HAVING min_count > 1 ORDER BY avg_rating DESC LIMIT 5';
这似乎可以解决问题,如果有更好的方法请随时告诉我:)
好的,希望我最后一次 post 关于我正在尝试编写的电影评级系统。感谢用户 Asaph 帮助我制作了前 5 部刺伤电影。这是我的数据库布局:
ID | UserID | Rating | TMDB | TYPE
-----------------------------------
1 34 6 432 2
-----------------------------------
2 34 9 432 3
-----------------------------------
3 44 9 468 2
并使用这个 sql 我可以列出最热门的血腥电影(类型 2)
sql SELECT `tmdb`, AVG(rating) AS avg_rating
FROM `tbl_rating`
WHERE `type`= :type
GROUP BY `tmdb`
ORDER BY avg_rating DESC
LIMIT 5
现在我想知道有什么方法可以让我的电影结果更公平?
例如,movie123 可能有 5 票,平均票数为 7,而 movie456 可能只有 1 票,但如果超过 7,它将位于列表的顶部。我怎样才能使这更公平?也许以某种方式在组中做最少的行数?或任何其他方式?
再一次,任何帮助都很棒!
好的,我想这就是我想要做的:)
$sql = 'SELECT `tmdb`, AVG(rate) AS avg_rating, COUNT(rate) AS min_count FROM `tbl_rating` WHERE `type`= :type GROUP BY `tmdb` HAVING min_count > 1 ORDER BY avg_rating DESC LIMIT 5';
这似乎可以解决问题,如果有更好的方法请随时告诉我:)