Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Presto-每天计算TP90_Sql_Presto - Fatal编程技术网

Sql Presto-每天计算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-

我已经根据可用的原始数据创建了一个数据集,如下所示,我希望在该日期之前每天生成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-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