Sql Presto-每天计算TP90
我已经根据可用的原始数据创建了一个数据集,如下所示,我希望在该日期之前每天生成TP90值。我的样本数据如下Sql Presto-每天计算TP90,sql,presto,Sql,Presto,我已经根据可用的原始数据创建了一个数据集,如下所示,我希望在该日期之前每天生成TP90值。我的样本数据如下 PURCHASE_DATE QTY 2019-01-01 10 2019-01-02 30 2019-01-03 50 .... 2019-01-31 20 例如,我想生成一个TP90 coulmn,其中包含截至该日期的数量列中的值 PURCHASE_DATE QTY TP90 2019-
PURCHASE_DATE QTY
2019-01-01 10
2019-01-02 30
2019-01-03 50
....
2019-01-31 20
例如,我想生成一个TP90 coulmn,其中包含截至该日期的数量列中的值
PURCHASE_DATE QTY TP90
2019-01-01 10 TP90 of QTY till 2019-01-01
2019-01-02 30 TP90 of QTY till 2019-01-02
2019-01-03 50 TP90 of QTY till 2019-01-03
....
2019-01-31 20
我可以使用约百分位(数量,0.9)生成TP90,但难以每天生成
感谢您,尽管普雷斯托非常擅长窗口功能,但显然没有提供窗口
约百分位()
一种选择是自联接表并聚合:
select
t.purchase_date,
t.qty,
approx_percentile(t1.qty, 0.9) tp90
from mytable t
inner join mytable t1
on t1.purchase_date <= t.purchase_date
group by
t.purchase_date,
t.qty
我(和Piotr)想知道这在您的用例中是否正常工作。请参阅--“所有聚合函数都可以用作窗口函数…”。如果在这种情况下不起作用,请提交一份新的文件。@PiotrFindeisen:我的错,我错过了文档的那部分。。。答案更新,感谢您的反馈!
select
t.purchase_date,
t.qty,
approx_percentile(t1.qty, 0.9) over(order by purchase_date) tp90
from mytable t