GBase 8c
其他
文章

GBase 8c 窗口函数(三)

发表于2023-12-07 09:26:2220次浏览1个评论
  1. CUME_DIST()

描述:CUME_DIST函数为各组内对应值生成累积分布序号。即根据公式(小于等于当前值的数据行数)/(该分组总行数totalrows)计算所得的相对序号。

返回值类型:DOUBLE PRECISION

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, cume_dist() OVER(PARTITION BY d_moy ORDER BY d_fy_week_seq) FROM public.date_dim e_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER BY 1,2;

 d_moy | d_fy_week_seq |    cume_dist     

-------+---------------+------------------

     1 |             1 | .233333333333333

     1 |             1 | .233333333333333

     1 |             1 | .233333333333333

     1 |             1 | .233333333333333

     1 |             1 | .233333333333333

     1 |             1 | .233333333333333

     1 |             1 | .233333333333333

     1 |             2 | .466666666666667

     1 |             2 | .466666666666667

     1 |             2 | .466666666666667

     1 |             2 | .466666666666667

     1 |             2 | .466666666666667

     1 |             2 | .466666666666667

     1 |             2 | .466666666666667

     1 |             3 |               .7

     1 |             3 |               .7

     1 |             3 |               .7

     1 |             3 |               .7

     1 |             3 |               .7

     1 |             3 |               .7

     1 |             3 |               .7

     1 |             4 | .933333333333333

     1 |             4 | .933333333333333

     1 |             4 | .933333333333333

     1 |             4 | .933333333333333

     1 |             4 | .933333333333333

     1 |             4 | .933333333333333

     1 |             4 | .933333333333333

     1 |             5 |                1

     1 |             5 |                1

     2 |             5 | .416666666666667

     2 |             5 | .416666666666667

     2 |             5 | .416666666666667

     2 |             5 | .416666666666667

     2 |             5 | .416666666666667

     2 |             6 |                1

     2 |             6 |                1

     2 |             6 |                1

     2 |             6 |                1

     2 |             6 |                1

     2 |             6 |                1

     2 |             6 |                1

(42 rows)

  1. NTILE(num_buckets integer)

描述:NTILE函数根据num_buckets integer将有序的数据集合平均分配到num_buckets所指定数量的桶中,并将桶号分配给每一行。分配时应尽量做到平均分配。

返回值类型:INTEGER

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, ntile(3) OVER(PARTITION BY d_moy ORDER BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER BY 1,2;

 d_moy | d_fy_week_seq | ntile

-------+---------------+-------

     1 |             1 |     1

     1 |             1 |     1

     1 |             1 |     1

     1 |             1 |     1

     1 |             1 |     1

     1 |             1 |     1

     1 |             1 |     1

     1 |             2 |     1

     1 |             2 |     1

     1 |             2 |     1

     1 |             2 |     2

     1 |             2 |     2

     1 |             2 |     2

     1 |             2 |     2

     1 |             3 |     2

     1 |             3 |     2

     1 |             3 |     2

     1 |             3 |     2

     1 |             3 |     2

     1 |             3 |     2

     1 |             3 |     3

     1 |             4 |     3

     1 |             4 |     3

     1 |             4 |     3

     1 |             4 |     3

     1 |             4 |     3

     1 |             4 |     3

     1 |             4 |     3

     1 |             5 |     3

     1 |             5 |     3

     2 |             5 |     1

     2 |             5 |     1

     2 |             5 |     1

     2 |             5 |     1

     2 |             5 |     2

     2 |             6 |     2

     2 |             6 |     2

     2 |             6 |     2

     2 |             6 |     3

     2 |             6 |     3

     2 |             6 |     3

     2 |             6 |     3

(42 rows)

  1. LAG(value any [, offset integer [, default any ]])

描述:LAG函数为各组内对应值生成滞后值。即当前值对应的行数往前偏移offset位后所得行的value值作为序号。若经过偏移后行数不存在,则对应结果取为default值。若无指定,在默认情况下,offset取为1,default值取为NULL。

返回值类型:与参数数据类型相同。

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, lag(d_moy,3,null) OVER(PARTITION BY d_moy ORDER BY d_fy_week_seq) FROM public.date_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER BY 1,2;

 d_moy | d_fy_week_seq | lag

-------+---------------+-----

     1 |             1 |    

     1 |             1 |    

     1 |             1 |    

     1 |             1 |   1

     1 |             1 |   1

     1 |             1 |   1

     1 |             1 |   1

     1 |             2 |   1

     1 |             2 |   1

     1 |             2 |   1

     1 |             2 |   1

     1 |             2 |   1

     1 |             2 |   1

     1 |             2 |   1

     1 |             3 |   1

     1 |             3 |   1

     1 |             3 |   1

     1 |             3 |   1

     1 |             3 |   1

     1 |             3 |   1

     1 |             3 |   1

     1 |             4 |   1

     1 |             4 |   1

     1 |             4 |   1

     1 |             4 |   1

     1 |             4 |   1

     1 |             4 |   1

     1 |             4 |   1

     1 |             5 |   1

     1 |             5 |   1

     2 |             5 |    

     2 |             5 |    

     2 |             5 |    

     2 |             5 |   2

     2 |             5 |   2

     2 |             6 |   2

     2 |             6 |   2

     2 |             6 |   2

     2 |             6 |   2

     2 |             6 |   2

     2 |             6 |   2

     2 |             6 |   2

(42 rows)

  1. LEAD(value any [, offset integer [, default any ]])

描述:LEAD函数为各组内对应值生成提前值。即当前值对应的行数向后偏移offset位后所得行的value值作为序号。若经过向后偏移后行数超过当前组内的总行数,则对应结果取为default值。若无指定,在默认情况下,offset取为1,default值取为NULL。

返回值类型:与参数数据类型相同。

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, lead(d_fy_week_seq,2) OVER(PARTITION BY d_moy ORDER BY d_fy_week_seq) FROM  public.date_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER BY 1,2;

d_moy | d_fy_week_seq | lead

-------+---------------+------

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    2

     1 |             1 |    2

     1 |             2 |    2

     1 |             2 |    2

     1 |             2 |    2

     1 |             2 |    2

     1 |             2 |    2

     1 |             2 |    3

     1 |             2 |    3

     1 |             3 |    3

     1 |             3 |    3

     1 |             3 |    3

     1 |             3 |    3

     1 |             3 |    3

     1 |             3 |    4

     1 |             3 |    4

     1 |             4 |    4

     1 |             4 |    4

     1 |             4 |    4

     1 |             4 |    4

     1 |             4 |    4

     1 |             4 |    5

     1 |             4 |    5

     1 |             5 |     

     1 |             5 |     

     2 |             5 |    5

     2 |             5 |    5

     2 |             5 |    5

     2 |             5 |    6

     2 |             5 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |     

     2 |             6 |     

(42 rows)

评论

登录后才可以发表评论
崔哥发表于 7个月前
千里黄云白日曛,北风吹雁雪纷纷。莫愁前路无知己,天下谁人不识君。六翮飘飖私自怜,一离京洛十余年。丈夫贫贱应未足,今日相逢无酒钱。