我有一张事件表,另一个是评分表。每个事件可以有许多评级。我需要能够通过评分从数据库中提取前三名事件,但是当然,需要对评分进行平均,因此具有五颗星评分的事件的评分不会比具有四颗平均值和100评分的事件更高。
谁能指导我如何在SQL中创建它?
谢谢
更新谢谢大家,我想我应该对事情的加权方式更加清楚(尽管我认为我需要更多地思考我希望它如何工作)。提供的SQL虽然有很大的帮助
对列名和评级系统的规则进行一些假设(这非常模糊),并且基于MSSQL背景,您可以执行以下操作:
select * from event where id in ( select top 3 eventid from ratings group by eventid having count(*)>100 order by avg(rating) desc )
如果出于性能原因,您可能希望将此评级值归一化为事件,如果要引入的评级很多。