首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:从分组关联值返回最高和最低关联记录,同时考虑到关联记录的总数。

Rails:从分组关联值返回最高和最低关联记录,同时考虑到关联记录的总数。
EN

Stack Overflow用户
提问于 2022-11-03 13:52:38
回答 1查看 18关注 0票数 0

在Rails应用程序中,我们有两个表:

代码语言:javascript
复制
products:
 - id
 - name

feedbacks
 - id
 - product_id
 - rating

因此,产品可以有许多反馈,有一个评级(1-5)。

我们想要做的是通过计算每个产品的反馈次数来得到最好的和最差的产品,使用(4-5)最好的和(1-2)最坏的反馈。

然而,我们也需要考虑产品的反馈总数,否则如果一个产品有比另一个产品更多的反馈,那么它最终可能是最好的,也可能是最差的。

作为一个例子,我们尝试了以下的‘应该’返回一个产品的列表,其中的反馈等级是4+,然后第一个元素将是最高的。

代码语言:javascript
复制
Product.joins(:feedbacks).group('feedbacks.rating').having('Max(rating) >= 4')

第一个问题..。这是返回这个的正确方式吗?是否有更好的方法只返回一个记录,而不是返回一个ActiveRecord关系并提取第一个记录?

第二个问题..。我们如何考虑对产品的反馈数量?所以查询变成..。“将4+与产品反馈的总次数相比较”

EN

回答 1

Stack Overflow用户

发布于 2022-11-03 21:51:51

编写一个将计算质量排名的SQL查询听起来很吓人。

这听起来像是一个XY Problem,我会用另一种方式来处理它:

目标:

与其兄弟姐妹相比,Product需要有一个ranking

我认为the mathematicians can better speak to是你选择设置rank的算法。

我计算rank的过程如下所示:

Product

  • Write中添加一个ranking列,该作业将执行“排名”calculation

  • Trigger此作业,以便在后台运行,无论是在计划中,还是在创建/更新Feedback时。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74304238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档