gpt4 book ai didi

sql - rails/postgres 中的阈值求和

转载 作者:行者123 更新时间:2023-11-29 12:47:18 26 4
gpt4 key购买 nike

我正在制作一个 walkathon Rails 应用程序。每个步行者都由 promise 每圈最高金额的人赞助。

我有一个名为 sponsorships 的表,其中包含 walker_idamount_per_lapmax_amount 列。我想编写一个 SQL 查询来确定步行者筹集了多少钱。

还有一个 walkers 表,其中包含 idnamelaps 列。

我知道这不是有效的 SQL,但我想要这样的东西,但不知道最好的方法。可以在执行查询之前提供 walker_id 和 laps。

SELECT SUM(MIN(Laps * sponsorships.amount_per_lap, sponsorships.max_amount)) FROM sponsorships where sponsorships.walker_id = 1;

我在 rails 中做这个,所以我试图弄清楚如何在 Arel 中做这样的事情,但无法弄清楚。

如有任何帮助,我们将不胜感激。

编辑:阐明walkers 表。

Edit2:不小心在伪代码中使用了最大值而不是最小值

最佳答案

我认为您正在寻找的 SQL 是这样的:

select w.id, w.name, sum(least(w.laps * s.amount_per_lap, s.max_amount))
from walkers w
join sponsorships s on w.id = s.walker_id
group by w.id, w.name

least function是什么适用于您的“不超过 max_amount”条件。既然您知道要选择什么,那么将其转换为 AR 对您来说应该是一件简单的事情;对于这样的事情,我倾向于直接使用 SQL。

关于sql - rails/postgres 中的阈值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com