GBase 8c V3.0.0数据类型——窗口函数

列存表目前只支持rank(expression)和row_number(expression)两个函数。

窗口函数与OVER语句一起使用。OVER语句用于对数据进行分组,并对组内元素进行排序。窗口函数用于给组内的值生成序号。

窗口函数中的order by后面必须跟字段名,若order by后面跟数字,该数字会被按照常量处理,因此对目标列没有起到排序的作用。

  1. RANK()

描述:RANK函数为各组内值生成跳跃排序序号,其中,相同的值具有相同序号。

返回值类型:BIGINT

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, rank() 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 | rank

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

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             1 |    1

     1 |             2 |    8

     1 |             2 |    8

     1 |             2 |    8

     1 |             2 |    8

     1 |             2 |    8

     1 |             2 |    8

     1 |             2 |    8

     1 |             3 |   15

     1 |             3 |   15

     1 |             3 |   15

     1 |             3 |   15

     1 |             3 |   15

     1 |             3 |   15

     1 |             3 |   15

     1 |             4 |   22

     1 |             4 |   22

     1 |             4 |   22

     1 |             4 |   22

     1 |             4 |   22

     1 |             4 |   22

     1 |             4 |   22

     1 |             5 |   29

     1 |             5 |   29

     2 |             5 |    1

     2 |             5 |    1

     2 |             5 |    1

     2 |             5 |    1

     2 |             5 |    1

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

     2 |             6 |    6

(42 rows)

  1. ROW_NUMBER()

描述:ROW_NUMBER函数为各组内值生成连续排序序号,其中,相同的值其序号也不相同。

返回值类型:BIGINT

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, Row_number() 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 | row_number

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

     1 |             1 |          1

     1 |             1 |          2

     1 |             1 |          3

     1 |             1 |          4

     1 |             1 |          5

     1 |             1 |          6

     1 |             1 |          7

     1 |             2 |          8

     1 |             2 |          9

     1 |             2 |         10

     1 |             2 |         11

     1 |             2 |         12

     1 |             2 |         13

     1 |             2 |         14

     1 |             3 |         15

     1 |             3 |         16

     1 |             3 |         17

     1 |             3 |         18

     1 |             3 |         19

     1 |             3 |         20

     1 |             3 |         21

     1 |             4 |         22

     1 |             4 |         23

     1 |             4 |         24

     1 |             4 |         25

     1 |             4 |         26

     1 |             4 |         27

     1 |             4 |         28

     1 |             5 |         29

     1 |             5 |         30

     2 |             5 |          1

     2 |             5 |          2

     2 |             5 |          3

     2 |             5 |          4

     2 |             5 |          5

     2 |             6 |          6

     2 |             6 |          7

     2 |             6 |          8

     2 |             6 |          9

     2 |             6 |         10

     2 |             6 |         11

     2 |             6 |         12

(42 rows)

  1. DENSE_RANK()

描述:DENSE_RANK函数为各组内值生成连续排序序号,其中,相同的值具有相同序号。

返回值类型:BIGINT

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, dense_rank() 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 | dense_rank

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

     1 |             1 |          1

     1 |             1 |          1

     1 |             1 |          1

     1 |             1 |          1

     1 |             1 |          1

     1 |             1 |          1

     1 |             1 |          1

     1 |             2 |          2

     1 |             2 |          2

     1 |             2 |          2

     1 |             2 |          2

     1 |             2 |          2

     1 |             2 |          2

     1 |             2 |          2

     1 |             3 |          3

     1 |             3 |          3

     1 |             3 |          3

     1 |             3 |          3

     1 |             3 |          3

     1 |             3 |          3

     1 |             3 |          3

     1 |             4 |          4

     1 |             4 |          4

     1 |             4 |          4

     1 |             4 |          4

     1 |             4 |          4

     1 |             4 |          4

     1 |             4 |          4

     1 |             5 |          5

     1 |             5 |          5

     2 |             5 |          1

     2 |             5 |          1

     2 |             5 |          1

     2 |             5 |          1

     2 |             5 |          1

     2 |             6 |          2

     2 |             6 |          2

     2 |             6 |          2

     2 |             6 |          2

     2 |             6 |          2

     2 |             6 |          2

     2 |             6 |          2

(42 rows)

  1. PERCENT_RANK()

描述:PERCENT_RANK函数为各组内对应值生成相对序号,即根据公式 (rank - 1) / (total rows - 1)计算所得的值。其中rank为该值依据RANK函数所生成的对应序号,totalrows为该分组内的总元素个数。

返回值类型:DOUBLE PRECISION

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, percent_rank() 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 |   percent_rank   

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

     1 |             1 |                0

     1 |             1 |                0

     1 |             1 |                0

     1 |             1 |                0

     1 |             1 |                0

     1 |             1 |                0

     1 |             1 |                0

     1 |             2 | .241379310344828

     1 |             2 | .241379310344828

     1 |             2 | .241379310344828

     1 |             2 | .241379310344828

     1 |             2 | .241379310344828

     1 |             2 | .241379310344828

     1 |             2 | .241379310344828

     1 |             3 | .482758620689655

     1 |             3 | .482758620689655

     1 |             3 | .482758620689655

     1 |             3 | .482758620689655

     1 |             3 | .482758620689655

     1 |             3 | .482758620689655

     1 |             3 | .482758620689655

     1 |             4 | .724137931034483

     1 |             4 | .724137931034483

     1 |             4 | .724137931034483

     1 |             4 | .724137931034483

     1 |             4 | .724137931034483

     1 |             4 | .724137931034483

     1 |             4 | .724137931034483

     1 |             5 |  .96551724137931

     1 |             5 |  .96551724137931

     2 |             5 |                0

     2 |             5 |                0

     2 |             5 |                0

     2 |             5 |                0

     2 |             5 |                0

     2 |             6 | .454545454545455

     2 |             6 | .454545454545455

     2 |             6 | .454545454545455

     2 |             6 | .454545454545455

     2 |             6 | .454545454545455

     2 |             6 | .454545454545455

     2 |             6 | .454545454545455

(42 rows)

  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)

  1. FIRST_VALUE(value any)

描述:FIRST_VALUE函数取各组内的第一个值作为返回结果。

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

示例:

 gbase=# SELECT d_moy, d_fy_week_seq, first_value(d_fy_week_seq) 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 | first_value

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

     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 |           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 |           5

     2 |             5 |           5

     2 |             5 |           5

     2 |             5 |           5

     2 |             5 |           5

     2 |             6 |           5

     2 |             6 |           5

     2 |             6 |           5

     2 |             6 |           5

     2 |             6 |           5

     2 |             6 |           5

     2 |             6 |           5

(42 rows)

  1. LAST_VALUE(value any)

描述:LAST_VALUE函数取各组内的最后一个值作为返回结果。

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

示例:

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

  d_moy | d_fy_week_seq | last_value

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

     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 |          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

     2 |             5 |          2

     2 |             5 |          2

     2 |             5 |          2

     2 |             5 |          2

(35 rows)

  1. NTH_VALUE(value any, nth integer)

描述:NTH_VALUE函数返回该组内的第nth行作为结果。若该行不存在,则默认返回NULL。

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

示例:

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

 d_moy | d_fy_week_seq | nth_value

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

     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 |         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 |             5 |          

(35 rows)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要导入表数据到gbase 8c数据库,可以使用以下步骤: 1. 准备数据库和表结构: 在gbase 8c中创建数据库和表结构,确保表结构与要导入的数据匹配。 2. 准备数据文件: 将要导入的数据保存为文本文件,确保数据文件的格式与表结构中的列对应。 3. 使用gbase 8c命令行工具: 打开gbase 8c命令行工具,登录到数据库。 4. 使用load data命令: 在gbase 8c命令行工具中使用load data命令导入数据。例如,假设要导入的数据文件名为data.txt,表名为table1,可以使用以下命令导入数据: ``` load data local infile 'data.txt' into table table1; ``` 这将把data.txt文件中的数据导入到table1表中。 5. 检查导入结果: 导入完成后,可以使用select语句检查已导入的数据是否正确。例如,可以使用以下命令检查table1表中的数据: ``` select * from table1; ``` 如果数据导入成功,将会显示导入的数据。 需要注意的是,导入数据时需要确保数据文件的格式与表结构的列对应,否则可能会导致导入失败或数据错误。此外,还可以使用其他方法如使用ETL工具或编写脚本来导入数据,在实际操作中可以根据具体需求选择合适的方法。 ### 回答2: 要导入gbase 8c的表数据,可以按照以下步骤进行操作: 1. 首先,在gbase 8c的客户端工具中登录到目标数据库。 2. 使用 "source" 命令指定表数据的来源文件路径。例如,假设表数据文件名为 "data.txt",该文件位于 "/home/user/data/" 目录下,则可以使用以下命令导入数据: `source /home/user/data/data.txt;` 3. 确保指定的数据文件路径和文件名正确,并且文件可以在当前登录的服务器上访问。 4. 执行以上命令后,gbase 8c将开始导入数据。可以使用 "show processlist;" 命令来查看导入进程的状态和进度。 5. 导入过程中,可以根据需要设置导入的配置选项,如并发线程数、批量提交大小等,以优化导入性能。具体的配置选项可以在导入命令之前设置。 需要注意的是,导入数据过程中需要确保表结构与数据文件的格式相匹配,否则可能导致导入失败或数据错误。在导入之前,可以使用DESCRIBE命令来查看表的结构信息,以确保数据文件与表结构一致。 另外,还可以使用其他工具或脚本来导入数据,如使用LOAD DATA命令、使用ETL工具等。在选择合适的导入方式时,可以根据实际需求和具体情况进行选择。 ### 回答3: gbase 8c 是一个关系型数据库管理系统,用于存储和管理数据。要导入表数据到 gbase 8c 数据库中,可以按照以下步骤进行操作: 1. 准备数据文件:首先,需要准备一个包含要导入的数据的文件,可以是 CSV、TXT 或其他格式的文件。确保文件的格式符合 gbase 8c 数据库的要求。 2. 创建目标表:在 gbase 8c 数据库中,首先需要创建一个目标表,用于存储导入的数据。可以使用 gbase 8c 提供的 CREATE TABLE 语句来创建表,定义表的结构和列的属性。 3. 导入表数据:接下来,可以使用 gbase 8c 提供的 LOAD DATA 语句来导入表数据。该语句的基本语法如下: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'data_file' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name[, partition_name] ...)] [IGNORE number {LINES | ROWS}] [SET col_name = expr, ...] 在语法中,data_file 为前面准备的数据文件的路径和文件名,tbl_name 为目标表的名称。语句中的其他参数根据需求进行设置。例如,可以使用 IGNORE 关键字来忽略数据文件中的错误行。 4. 等待导入完成:一旦执行 LOAD DATA 语句,系统将开始导入表数据。根据数据文件的大小和服务器的性能,导入时间可能会有所不同。在导入过程中,请耐心等待,直到导入完成。 需要注意的是,在导入表数据之前,请确保数据文件中的数据与表的结构相匹配,以避免错误或数据丢失。另外,还可以根据需要调整 LOAD DATA 语句中的参数,以满足特定的导入需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值