gpt4 book ai didi

sql - 根据 created_at : condition in Rails 减去两行

转载 作者:行者123 更新时间:2023-11-29 14:17:43 26 4
gpt4 key购买 nike

我目前有一个图表显示每天的累计总数,但我真正想要的是那天的边际增长,也就是增量。这怎么能通过查询来完成?不幸的是,累计总数是 API 可用的全部。

这是我的表格:

org:          cumulative_donations_count:    created_at:
Goodwill 650 2017-02-28 18:50:20.654996
Goodwill 300 2017-02-27 18:50:20.654996
Goodwill 250 2017-02-26 18:50:20.654996
Goodwill 100 2017-02-25 18:50:20.654996

已采取的步骤 -- 我开始迭代 self.where(org: goodwill).pluck(created_at:, donations_count:)按 |date, value| 排列试图通过数组中各自的索引值比较日期,但我们的首席工程师希望它完全通过查询来完成。我还考虑过添加一列来显示差异,但我们想对这些值运行许多不同的计算。

有一个基本案例 if <= 1对于一个组织需要进行比较的记录数,应该返回 nil。显然,created_at: 值不会正好落后 1 天(以毫秒为单位)。

按理说,也有类似的问题,但是这个例子的条件足够简单,对很多读者都有用。

更新 -- 预期输出

[[2017-02-28, 350],[2017-02-27, 50], [2017-02-26, 150], [2017-02-25, nil]]

最佳答案

如果我没理解错的话,你会在 SQL 中使用 lag():

select org, cumulative_donations_count, created_at,
(cumulative_donations_count -
lag(cumulative_donations_count, 1, 0) over (partition by GoodWill order by created_at)
) as inc
from t;

这使用了 3-arg form 滞后()。第二个参数是要返回的记录数。第三个是第一条记录的值(当没有前面的记录时)。

关于sql - 根据 created_at : condition in Rails 减去两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511632/

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