如何解决间隔之间的雪花SQL范围
我有具有以下结构的输入表- ID,日期,值。
我正在尝试为数据集中的每条记录计算最近10个月的最小值。为此,我正在使用range between interval
。
下面的代码在SPARK sql中可以正常运行,但由于某些原因,我不能在雪花sql中使用相同的代码。感谢有人可以指导我如何修改以下代码以在SNowflake sql中运行。
select *,min(avg_Value) OVER (
PARTITION BY ID
ORDER BY CAST(Date AS timestamp)
RANGE BETWEEN INTERVAL 10 MONTHS PRECEDING AND CURRENT ROW) as min_value_in_last_10_months
from
(
select ID,Date,avg(Value) as avg_Value
from table
group by ID,Date
)
解决方法
雪花支持横向连接,因此一种方法是:
select . . .
from t cross join lateral
(select avg(t2.value) as avg_value
from t t2
where t2.id = t.id and
t2.date >= t.date - interval 10 month and
t2.date <= t.date
) a
,
如果你的结果表中有所有月份,那么你也可以试试这个
select *,min(avg_Value) OVER (
PARTITION BY ID
ORDER BY CAST(Date AS timestamp)
ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) as min_value_in_last_10_months
from
(
select ID,Date,avg(Value) as avg_Value
from table
group by ID,Date
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。