gpt4 book ai didi

sql - 查询以返回连续 X 天内的最低值 SUM

转载 作者:行者123 更新时间:2023-12-04 13:50:13 25 4
gpt4 key购买 nike

我什至不知道怎么说这个!...

我有一个包含两列的表格,Price( double )和 StartDate(日期)。我需要能够查询表并返回 X 行数,假设此示例为 3 - 我需要拉回具有连续日期的 3 行,例如2019 年 5 月 7 日、8 日、9 日,具有日期范围内最低的价格总和值。

我在考虑一个接受 startDateRange、endDateRange、持续时间的函数。

它将返回 startDateRange 和 endDateRange 之间的行数(持续时间),而这三行的总和将是该日期范围内连续日期的任意行数的最便宜(最低)总和。

例如,如果我想要从 2019 年 5 月 1 日到 2019 年 5 月 14 日之间最便宜的 3 个日期,将返回突出显示的 3 行;

enter image description here

我认为 LEAD() 和 LAG() 可能是一个起点,但我不是真正的 SQL 人员,所以不确定是否有更好的解决方法。

目前我已经在我的业务层上开发了一些 c# 来执行此操作,但在大型数据集上它有点迟钝 - 直接从我的数据层获取记录列表会很好。

任何想法将不胜感激!

提前致谢。

最佳答案

您可以使用窗口函数计算 3 天内的平均值。然后使用 top 1 来选择具有最低平均值的 3 行的集合:

select  top 1 StartDt
, AvgPrice
from (
select StartDt
, avg(Price) over (order by StartDt rows between 2 preceding
and current row) AvgPrice
, count(*) over (order by StartDt rows between 2 preceding
and current row) RowCnt
from prices
) sets_of_3_days
where RowCnt = 3 -- ignore first two rows
order by
AvgPrice desc

关于sql - 查询以返回连续 X 天内的最低值 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54568985/

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