小编典典

在SQL中按加权等级排序?

sql

我有一张事件表,另一个是评分表。每个事件可以有许多评级。我需要能够通过评分从数据库中提取前三名事件,但是当然,需要对评分进行平均,因此具有五颗星评分的事件的评分不会比具有四颗平均值和100评分的事件更高。

谁能指导我如何在SQL中创建它?

谢谢

更新谢谢大家,我想我应该对事情的加权方式更加清楚(尽管我认为我需要更多地思考我希望它如何工作)。提供的SQL虽然有很大的帮助


阅读 376

收藏
2021-03-23

共1个答案

小编典典

对列名和评级系统的规则进行一些假设(这非常模糊),并且基于MSSQL背景,您可以执行以下操作:

select * from event where id in (
   select top 3 eventid
   from ratings
   group by eventid having count(*)>100 order by avg(rating) desc
)

如果出于性能原因,您可能希望将此评级值归一化为事件,如果要引入的评级很多。

2021-03-23