当前位置: 首页 > 面试题库 >

在SQL中按加权等级排序?

赏航
2023-03-14
问题内容

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

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



 类似资料:
  • 问题内容: 因此,我有一个表,其ID值和日期看起来像这样: 基本上,ID值仅对那一年是唯一的-它们会重置下一年。 我希望能够按ID值和日期排序,但我想进行排序,以便按年份对值进行排序。只是带有辅助日期排序的常规ID会产生以下结果: 但是我想要一个查询,该查询生成一个看起来像这样的表: 这可能吗? 问题答案: 这个怎么样:

  • 我在使用IMDb数据集时遇到了一个问题,我似乎无法解决这个问题。这个问题要求只放映1995年制作的电影。问题是,这一年是与每一个电影标题一起列出的,即:“玩具总动员(1995)”。你怎么能从一串文本中刮出年份? 问题是:

  • 问题内容: 我有一个(int)列,称为“优先级”。选择项目时,我希望优先级最高(最低编号)在前,而优先级最低(最高编号)在最后。 但是,没有优先级的项目(当前优先级为0)应在具有优先级的项目之后的其他列中列出。 换一种说法。如果我有以下优先事项: 我如何像这样对它们进行排序: 我想我可以使用Int.max而不是0,但是0构成了一个很好的默认值,我会尝试保留它。 问题答案: 尝试:

  • 我有下表在OracleSQL方言(被调用与一些java代码) 我正在寻找一种方法来进行以下分类: 将part、locker、serial#组合在一起,并在每个组内按升序或降序对描述进行排序,同时确保每个组的第一条记录也按升序或降序正确排序(冲突应按part、locker、serial的所需顺序排序)。例如: 排序DESC将产生: 如何实现这种复杂的排序类型?仅仅通过查询就可以吗?

  • 问题内容: 我想知道是否有按IN()子句中的值顺序进行排序的方法(可能是一种更好的方法)。 问题是我有2个查询,一个查询获取所有ID,第二个查询获取所有信息。第一个创建我要第二个排序的ID的顺序。这些ID以正确的顺序放入IN()子句中。 因此,它类似于(极其简化): 问题在于第二个查询不会以将ID放入IN()子句中的顺序来返回结果。 我发现的一种解决方案是将所有ID放入具有自动递增字段的临时表中,

  • 我尝试了,但它是按升序排序的。也按升序排序。我查看了stackoverflow,发现的答案都是过时的或引用了RDDS。我想在Spark中使用原生的dataframe。