繁体   English   中英

大查询 sql 使用滞后 function 缺少天数

[英]Big query sql Using lag function with missing days

我在 Big Query 超集中使用 sql 来创建 pivot 表来计算一系列天之间的游戏差异:

Game    Date        Sum     Prev_sum
First   2022-08-15  178.68  
        2022-08-16  345.09  166.41
        2022-08-18  570.53  991.89   --wrong input ,missing day
        2022-08-19  173.69  -396.84
        2022-08-20  532.35  358.66
        2022-08-21  248.35  -284
Second  2022-08-17  518.59  600.53   --wrong input ,missing day
        2022-08-20  182.91  148.3
Third   2022-08-15  527.35  
        2022-08-17  359.93  426.53
        2022-08-20  539.05  564.57
        2022-08-21  543.74  4.69

我在用着

 select Date , SUM(Sum) ,
           SUM(Sum) - 
           lag(SUM(Sum)) over(partition by Game order by min(Date) ASC)
   from my_table

理想情况下,无论显示的日期如何,我都希望每行之间的总和有所不同

Game    Date        Sum     Prev_sum
First   2022-08-15  178.68  
        2022-08-16  345.09  166.41
        2022-08-18  570.53  225   
        2022-08-19  173.69  -396.84
        2022-08-20  532.35  358.66
        2022-08-21  248.35  -284
Second  2022-08-17  518.59  
        2022-08-20  182.91  -336

考虑以下查询:

SELECT Game, Date,
       Sum - LAG(Sum) OVER(PARTITION BY Game ORDER BY Date) Prev_sum
  FROM my_table
 ORDER BY 1, 2;
查询结果:
游戏 日期 Prev_sum
第一的 2022-08-15
第一的 2022-08-16 166.40999999999997
第一的 2022-08-18 225.44
第一的 2022-08-19 -396.84
第一的 2022-08-20 358.66
第一的 2022-08-21 -284.0
第二 2022-08-17
第二 2022-08-20 -335.68000000000006
第三 2022-08-15
第三 2022-08-17 -167.42000000000002
第三 2022-08-20 179.11999999999995
第三 2022-08-21 4.6900000000000546
样品表
create temp table my_table AS
select 'First' Game,   '2022-08-15' Date,  178.68  Sum union all
select 'First',   '2022-08-16',  345.09 union all
select 'First',   '2022-08-18',  570.53 union all
select 'First',   '2022-08-19',  173.69 union all
select 'First',   '2022-08-20',  532.35 union all
select 'First',   '2022-08-21',  248.35 union all
select 'Second',  '2022-08-17',  518.59 union all
select 'Second',  '2022-08-20',  182.91 union all
select 'Third',   '2022-08-15',  527.35 union all
select 'Third',   '2022-08-17',  359.93 union all
select 'Third',   '2022-08-20',  539.05 union all
select 'Third',   '2022-08-21',  543.74 ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM