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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。