暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss常用聚集函数介绍与示例(3)

MTL 2022-11-10
846
  • group_concat([DISTINCT | ALL] expression [,expression …] [ORDER BY { expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ] } [,…]] [SEPARATOR str_val])

    描述:(仅在B模式下可用)参数数量不定,可对多列进行拼接,将聚集列数据按照ORDER BY指定的排序方式排列,并用separator指定的分隔符拼接成一个字符串, 不支持作为窗口函数使用。

    • DISTINCT:可选,表示对每行拼接后结果进行去重。
    • expression: 必选,指定聚集列名或基于列的有效表达式。
    • ORDER BY: 可选,后跟可变数量表达式及排序规则。group_concat函数中不支持(order by + 数字)这种形式。
    • SEPARATOR子句: 可选,后跟CONST字符(串),分组中相邻两行表达式结果使用此分隔符拼接。若不指定,默认使用英文逗号‘,’。
    • 当同时指定DISTINCT和ORDER BY时,openGauss的所有order by表达式必须在distinct表达式中,否则报错。

    返回类型:text

    示例:

    使用separator指定分隔符为';'。

    test=# select id, group_concat(v separator ';') from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | A;C;A
      2 | B;D;B
    (2 rows)
    

    分隔符缺省时,默认为','。

    test=# select id, group_concat(id,v) from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | 1A,1C,1A
      2 | 2B,2D,2B
    (2 rows)
    

    聚集列是文本字符集类型。

    test=# select id, group_concat(v) from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | A,C,A
      2 | B,D,B
    (2 rows)
    

    聚集列是整型。

    test=# select id, group_concat(v separator ';') from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | 50;99
      2 | 20;100
    (2 rows)
    

    聚集列是浮点类型。

    test=# select id, group_concat(v separator ';') from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | 50.11;99.33
      2 | 20.22;100.44
    (2 rows)
    

    聚集列是时间类型。

    test=# select id, group_concat(hiredate separator ';') from t group by id order by id asc;
      id |                     group_concat
    ----+-------------------------------------------------------
       1 | 2022-08-22 10:51:29.374948;2022-08-22 10:51:29.374948
       2 | 2022-08-22 10:51:29.374948;2022-08-22 10:51:29.374948
    (2 rows)
    

    聚集列是二进制类型。

    test=# select id, group_concat(v separator ';') from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | 19;1B
      2 | 1A;1C
    (2 rows)
    

    聚集列是时间间隔类型。

    test=# select id, group_concat(vacationt separator ';') from t group by id order by id asc;
     id |                    group_concat
    ----+-----------------------------------------------------
      1 | 8785 days 11:04:01.510189;8783 days 11:04:01.510189
      2 | 8784 days 11:04:01.510189;8782 days 11:04:01.510189
    (2 rows)
    

    使用distinct去重。

    test=# select id, group_concat(distinct v) from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | A,C
      2 | B,D
    (2 rows)
    

    使用order by排序。

    test=# select id, group_concat(v order by v desc) from t group by id order by id asc;
     id | group_concat
    ----+--------------
      1 | C,A,A
      2 | D,B,B
    (2 rows)
    
  • covar_pop(Y, X)

    描述:总体协方差。

    返回类型:double precision

    示例:

    openGauss=# SELECT COVAR_POP(sr_fee, sr_net_loss) FROM tpcds.store_returns WHERE sr_customer_sk < 1000;
        covar_pop     
    ------------------
     829.749627587403
    (1 row)
    
  • covar_samp(Y, X)

    描述:样本协方差。

    返回类型:double precision

    示例:

    openGauss=# SELECT COVAR_SAMP(sr_fee, sr_net_loss) FROM tpcds.store_returns WHERE sr_customer_sk < 1000;
        covar_samp    
    ------------------
     830.052235037289
    (1 row)
    
  • stddev_pop(expression)

    描述:总体标准差。

    返回类型:对于浮点类型的输入返回double precision,其他输入返回numeric。

    示例:

    openGauss=# SELECT STDDEV_POP(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1;
        stddev_pop    
    ------------------
     289.224294957556
    (1 row)
    
  • stddev_samp(expression)

    描述:样本标准差。

    返回类型:对于浮点类型的输入返回double precision,其他输入返回numeric。

    示例:

    openGauss=# SELECT STDDEV_SAMP(inv_quantity_on_hand) FROM tpcds.inventory WHERE inv_warehouse_sk = 1;
       stddev_samp    
    ------------------
     289.224359757315
    (1 row)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论