华为云用户手册

  • regr_syy(Y, X) 描述:sum(Y^2) - sum(X)^2/N(因变量的"平方和") 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_syy_t1(a int, b int); gaussdb=# INSERT INTO regr_syy_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_SYY(b,a) FROM regr_syy_t1; regr_syy ---------- 10 (1 row) gaussdb=# DROP TABLE regr_syy_t1;
  • variance(expexpression,ression) 描述:var_samp的别名。 返回类型:对于浮点类型的输入返回double precision类型,其他输入返回numeric类型。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE variance_t1(a int, b int); gaussdb=# INSERT INTO variance_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT VARIANCE(a) FROM variance_t1; variance ----------------------- .70000000000000000000 (1 row) gaussdb=# DROP TABLE variance_t1;
  • pivot_func(anyelement) 描述:返回某列中唯一不为NULL的值,如果有超过两个非NULL值则报错。其中value为输入参数,可以为任意类型。 返回类型:与输入参数类型相同。 该聚合函数主要作为pivot语法内部使用。 gaussdb=# CREATE TABLE pivot_func_t1(a int, b int); gaussdb=# INSERT INTO pivot_func_t1 VALUES (NULL,11),(1,2); gaussdb=# SELECT PIVOT_FUNC(a) FROM pivot_func_t1; pivot_func ------------ 1 (1 row) gaussdb=# DROP TABLE pivot_func_t1;
  • regr_count(Y, X) 描述:两个表达式都不为NULL的输入行数。 返回类型:bigint 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_count_t1(a int, b int); gaussdb=# INSERT INTO regr_count_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_COUNT(a,b) FROM regr_count_t1; regr_count ------------ 5 (1 row) gaussdb=# DROP TABLE regr_count_t1;
  • regr_slope(Y, X) 描述:根据所有输入的点(X, Y)按照最小二乘法拟合成一个线性方程, 然后返回该直线的斜率。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_slope_t1(a int, b int); gaussdb=# INSERT INTO regr_slope_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_SLOPE(b,a) FROM regr_slope_t1; regr_slope ------------------ 1.78571428571429 (1 row) gaussdb=# DROP TABLE regr_slope_t1;
  • regr_r2(Y, X) 描述:相关系数的平方。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_r2_t1(a int, b int); gaussdb=# INSERT INTO regr_r2_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_R2(b,a) FROM regr_r2_t1; regr_r2 ------------------ .892857142857143 (1 row) gaussdb=# DROP TABLE regr_r2_t1;
  • regr_intercept(Y, X) 描述:根据所有输入的点(X, Y)按照最小二乘法拟合成一个线性方程,然后返回该直线的Y轴截距。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_intercept_t1(a int, b int); gaussdb=# INSERT INTO regr_intercept_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_INTERCEPT(b,a) FROM regr_intercept_t1; regr_intercept ------------------ .785714285714286 (1 row) gaussdb=# DROP TABLE regr_intercept_t1;
  • regr_sxx(Y, X) 描述:sum(Y^2) - sum(X)^2/N (自变量的“平方和”)。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_sxx_t1(a int, b int); gaussdb=# INSERT INTO regr_sxx_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_SXX(b,a) FROM regr_sxx_t1; regr_sxx ---------- 2.8 (1 row) gaussdb=# DROP TABLE regr_sxx_t1;
  • regr_avgy(Y, X) 描述:因变量的平均值 (sum(Y)/X)。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_avgy_t1(a int, b int); gaussdb=# INSERT INTO regr_avgy_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_AVGY(a,b) FROM regr_avgy_t1; regr_avgy ----------- 1.8 (1 row) gaussdb=# DROP TABLE regr_avgy_t1;
  • bit_or(expression) 描述:所有非NULL输入值的按位或(OR),如果全部输入值皆为NULL,那么结果也为NULL。 返回类型:和参数数据类型相同 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE bit_or_t1(a int, b int); gaussdb=# INSERT INTO bit_or_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT BIT_OR(a) FROM bit_or_t1; bit_or -------- 3 (1 row) gaussdb=# DROP TABLE bit_or_t1;
  • rank(expression) 描述:根据expression对不同组内的元组进行跳跃排序。 返回类型:BIGINT 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 gaussdb=# CREATE TABLE rank_t1(a int, b int); gaussdb=# INSERT INTO rank_t1 VALUES(NULL,1),(1, 2),(1, 3),(2, 4),(2, 5),(3,6); gaussdb=# SELECT a,b,RANK() OVER(PARTITION BY a ORDER BY b) FROM rank_t1; a | b | rank ---+---+------ 1 | 2 | 1 1 | 3 | 2 2 | 4 | 1 2 | 5 | 2 3 | 6 | 1 | 1 | 1 (6 rows) gaussdb=# DROP TABLE rank_t1;
  • regr_avgx(Y, X) 描述:自变量的平均值 (sum(X)/Y)。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE regr_t1(a int, b int); gaussdb=# INSERT INTO regr_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT REGR_AVGX(a,b) FROM regr_t1; regr_avgx ----------- 4 (1 row) gaussdb=# DROP TABLE regr_t1;
  • corr(Y, X) 描述:相关系数。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE corr_t1(a int, b int); gaussdb=# INSERT INTO corr_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT CORR(a,b) FROM corr_t1; corr ------------------ .944911182523068 (1 row) gaussdb=# DROP TABLE corr_t1;
  • stddev_samp(expression) 描述:样本标准差。 返回类型:对于浮点类型的输入返回double precision,其他输入返回numeric。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE stddev_samp_t1(a int, b int); gaussdb=# INSERT INTO stddev_samp_t1 VALUES (NULL,11),(11,21),(11,31),(21,41),(21,51),(31,61); gaussdb=# SELECT STDDEV_SAMP(a) FROM stddev_samp_t1; stddev_samp -------------------- 8.3666002653407555 (1 row) gaussdb=# DROP TABLE stddev_samp_t1;
  • var_samp(expression) 描述:样本方差(样本标准差的平方)。 返回类型:对于浮点类型的输入返回double precision类型,其他输入返回numeric类型。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE var_samp_t1(a int, b int); gaussdb=# INSERT INTO var_samp_t1 VALUES (NULL,11),(11,21),(11,31),(21,41),(21,51),(31,61); gaussdb=# SELECT VAR_SAMP(a) FROM var_samp_t1; var_samp --------------------- 70.0000000000000000 (1 row) gaussdb=# DROP TABLE var_samp_t1;
  • bit_and(expression) 描述:所有非NULL输入值的按位与(AND),如果全部输入值皆为NULL,那么结果也为NULL 。 返回类型:和参数数据类型相同。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE bit_and_t1(a int, b int); gaussdb=# INSERT INTO bit_and_t1 VALUES (NULL,11),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT BIT_AND(a) FROM bit_and_t1; bit_and --------- 0 (1 row) gaussdb=# DROP TABLE bit_and_t1;
  • stddev_pop(expression) 描述:总体标准差。 返回类型:对于浮点类型的输入返回double precision,其他输入返回numeric。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE stddev_pop_t1(a int, b int); gaussdb=# INSERT INTO stddev_pop_t1 VALUES (NULL,11),(11,21),(11,31),(21,41),(21,51),(31,61); gaussdb=# SELECT STDDEV_POP(a) FROM stddev_pop_t1; stddev_pop -------------------- 7.4833147735478828 (1 row) gaussdb=# DROP TABLE stddev_pop_t1;
  • var_pop(expression) 描述:总体方差(总体标准差的平方)。 返回类型:对于浮点类型的输入返回double precision类型,其他输入返回numeric类型。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE var_pop_t1(a int, b int); gaussdb=# INSERT INTO var_pop_t1 VALUES (NULL,11),(11,21),(11,31),(21,41),(21,51),(31,61); gaussdb=# SELECT VAR_POP(a) FROM var_pop_t1; var_pop --------------------- 56.0000000000000000 (1 row) gaussdb=# DROP TABLE var_pop_t1;
  • covar_samp(Y, X) 描述:样本协方差。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE covar_samp_t1(a int, b int); gaussdb=# INSERT INTO covar_samp_t1 VALUES (NULL,11),(11,21),(11,31),(21,41),(21,51),(31,61); gaussdb=# SELECT COVAR_SAMP(a,b) FROM covar_samp_t1; covar_samp ------------ 125 (1 row) gaussdb=# DROP TABLE covar_samp_t1;
  • wm_concat(expression) 描述:将指定的列/列的表达式数据用逗号(,)连接成一个字符串进行输出。 返回类型:text 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 gaussdb=# CREATE TABLE wm_concat_t1(a int, b interval); CREATE TABLE gaussdb=# INSERT INTO wm_concat_t1 VALUES (NULL,'1 days'),(1,'2 days'),(1,'3 days'),(2,'4 days'),(2,'5 days'),(3,'6 days'); INSERT 0 6 gaussdb=# SELECT wm_concat(a) FROM wm_concat_t1; wm_concat ----------- 1,1,2,2,3 (1 row) gaussdb=# SELECT wm_concat(b) FROM wm_concat_t1; wm_concat ------------------------------------------ 1 day,2 days,3 days,4 days,5 days,6 days (1 row) gaussdb=# DROP TABLE wm_concat_t1; 该函数的返回值为text,拼接结果无序。
  • covar_pop(Y, X) 描述:总体协方差。 返回类型:double precision 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE covar_pop_t1(a int, b int); gaussdb=# INSERT INTO covar_pop_t1 VALUES (NULL,11),(11,21),(11,31),(21,41),(21,51),(31,61); gaussdb=# SELECT COVAR_POP(a,b) FROM covar_pop_t1; covar_pop ----------- 100 (1 row) gaussdb=# DROP TABLE covar_pop_t1;
  • group_concat([DISTINCT | ALL] expression [,expression ...] [ORDER BY { expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ] } [,...]] [SEPARATOR str_val]) 描述:参数数量不定,可对多列进行拼接,将聚集列数据按照ORDER BY指定的排序方式排列,并用separator指定的分隔符拼接成一个字符串, 不支持作为窗口函数使用。 DISTINCT:可选,表示对每行拼接后结果进行去重。 expression:必选,指定聚集列名或基于列的有效表达式。 ORDER BY: 可选,后跟可变数量表达式及排序规则。group_concat函数中不支持(ORDER BY + 数字)形式。 SEPARATOR子句: 可选,后跟字符或字符串,分组中相邻两行表达式结果使用此分隔符拼接。若不指定,默认使用英文逗号‘,’。 当同时指定DISTINCT和ORDER BY时,ORDER BY表达式必须在distinct表达式中,否则报错。 使用参数group_concat_max_len限制GROUP_CONCAT最大返回长度,超长截断,目前能返回的最大长度是1073741823。 返回类型:text 示例: 使用separator指定分隔符为';'。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b int); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,1),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT a,group_concat(b separator ';') FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+-------------- 1 | 2;3 2 | 4;5 3 | 6 | 1 (4 rows) gaussdb=# DROP TABLE group_concat_t1; 分隔符缺省时,默认为','。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b int); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,1),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT a,group_concat(a,b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+-------------- 1 | 12,13 2 | 24,25 3 | 36 | (4 rows) gaussdb=# DROP TABLE group_concat_t1; 聚集列是文本字符集类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b text); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,'a1'),(1,'b2'),(1,'c3'),(2,'d4'),(2,'e5'),(3,'f6'); gaussdb=# SELECT a,group_concat(a,b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+-------------- 1 | 1b2,1c3 2 | 2d4,2e5 3 | 3f6 | (4 rows) gaussdb=# DROP TABLE group_concat_t1; 聚集列是整型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b int); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,1),(1, 2),(1, 3),(2, 4),(2, 5),(3,6); gaussdb=# SELECT a,group_concat(b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+-------------- 1 | 2,3 2 | 4,5 3 | 6 | 1 (4 rows) gaussdb=# DROP TABLE group_concat_t1; 聚集列是浮点类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b float); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,1.11),(1,2.22),(1,3.33),(2,4.44),(2,5.55),(3,6.66); gaussdb=# SELECT a,group_concat(b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+-------------- 1 | 3,2,2,3 2 | 6,4,5,4 3 | 7,6 | 1,1 (4 rows) gaussdb=# DROP TABLE group_concat_t1; 聚集列是时间类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b timestamp); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,'2000-01-01'),(1,'2000-02-02'),(1,'2000-03-03'),(2,'2000-04-04'),(2,'2000-05-05'),(3,'2000-06-06'); gaussdb=# SELECT a,group_concat(b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+----------------------------------------- 1 | 2000-02-02 00:00:00,2000-03-03 00:00:00 2 | 2000-04-04 00:00:00,2000-05-05 00:00:00 3 | 2000-06-06 00:00:00 | 2000-01-01 00:00:00 (4 rows) gaussdb=# DROP TABLE group_concat_t1; 聚集列是二进制类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b bytea); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,'1'),(1,'2'),(1,'3'),(2,'4'),(2,'5'),(3,'6'); gaussdb=# SELECT a,group_concat(b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+-------------- 1 | \x32,\x33 2 | \x34,\x35 3 | \x36 | \x31 (4 rows) gaussdb=# DROP TABLE group_concat_t1; 聚集列是时间间隔类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b interval); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,'1 days'),(1,'2 days'),(1,'3 days'),(2,'4 days'),(2,'5 days'),(3,'6 days'); gaussdb=# SELECT a,group_concat(b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+--------------- 1 | 2 days,3 days 2 | 4 days,5 days 3 | 6 days | 1 day (4 rows) gaussdb=# DROP TABLE group_concat_t1; 使用distinct去重。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b interval); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,'1 days'),(1,'2 days'),(1,'2 days'),(1,'3 days'),(1,'3 days'),(2,'4 days'),(2,'5 days'),(3,'6 days'); gaussdb=# SELECT a,group_concat(distinct b) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+--------------- 1 | 2 days,3 days 2 | 4 days,5 days 3 | 6 days | 1 day (4 rows) gaussdb=# DROP TABLE group_concat_t1; 使用ORDER BY排序。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE group_concat_t1(a int, b interval); gaussdb=# INSERT INTO group_concat_t1 VALUES (NULL,'1 days'),(1,'2 days'),(1,'3 days'),(2,'4 days'),(2,'5 days'),(3,'6 days'); gaussdb=# SELECT a,group_concat(b ORDER BY b desc) FROM group_concat_t1 GROUP BY a ORDER BY a; a | group_concat ---+--------------- 1 | 3 days,2 days 2 | 5 days,4 days 3 | 6 days | 1 day (4 rows) gaussdb=# DROP TABLE group_concat_t1;
  • array_agg(expression) 描述:将所有输入值(包括空)连接成一个数组。 返回类型:参数类型的数组 支持对XML类型数据操作。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE array_agg_t1(a int, b int); gaussdb=# INSERT INTO array_agg_t1 VALUES (NULL,1),(1,2),(2,3),(3,4),(4,5); gaussdb=# SELECT ARRAY_AGG(a) FROM array_agg_t1; array_agg ---------------- {NULL,1,2,3,4} (1 row) gaussdb=# DROP TABLE array_agg_t1;
  • string_agg(expression, delimiter) 描述:将输入值连接成为一个字符串,用分隔符分开。 返回类型:和参数数据类型相同。 支持对显示转换成字符类型后的XML类型数据操作。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE string_agg_t1(a int, b int); gaussdb=# INSERT INTO string_agg_t1 VALUES (NULL,1),(1,2),(2,3),(3,4),(4,5); gaussdb=# SELECT STRING_AGG(a,';') FROM string_agg_t1; string_agg ------------ 1;2;3;4 (1 row) gaussdb=# DROP TABLE string_agg_t1;
  • listagg(expression [, delimiter]) WITHIN GROUP(ORDER BY order-list) 描述:将聚集列数据按WITHIN GROUP指定的排序方式排列,并用delimiter指定的分隔符拼接成一个字符串。 expression:必选。指定聚集列名或基于列的有效表达式,不支持DISTINCT关键字和VARIADIC参数。 delimiter:可选。指定分隔符,可以是字符串常数或基于分组列的确定性表达式,缺省时表示分隔符为空。 order-list:必选。指定分组内的排序方式。 返回类型:text listagg是兼容Oracle 11g2的列转行聚集函数,可以指定OVER子句用作窗口函数。为了避免与函数本身WITHIN GROUP子句的ORDER BY造成二义性,listagg用作窗口函数时,OVER子句不支持ORDER BY的窗口排序或窗口框架。 示例: 聚集列是文本字符集类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE listagg_t1(a int, b text); gaussdb=# INSERT INTO listagg_t1 VALUES (NULL,'a1'),(1,'b2'),(1,'c3'),(2,'d4'),(2,'e5'),(3,'f6'); gaussdb=# SELECT a,LISTAGG(b,';') WITHIN GROUP(ORDER BY b) FROM listagg_t1 group by a; a | listagg ---+--------- 1 | b2;c3 2 | d4;e5 3 | f6 | a1 (4 rows) gaussdb=# DROP TABLE listagg_t1; 聚集列是整型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE listagg_t1(a int, b int); gaussdb=# INSERT INTO listagg_t1 VALUES (NULL,1),(1,2),(1,3),(2,4),(2,5),(3,6); gaussdb=# SELECT a,LISTAGG(b,';') WITHIN GROUP(ORDER BY b) FROM listagg_t1 group by a; a | listagg ---+--------- 1 | 2;3 2 | 4;5 3 | 6 | 1 (4 rows) gaussdb=# DROP TABLE listagg_t1; 聚集列是浮点类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE listagg_t1(a int, b float); gaussdb=# INSERT INTO listagg_t1 VALUES (NULL,1.111),(1,2.222),(1,3.333),(2,4.444),(2,5.555),(3,6.666); gaussdb=# SELECT a,LISTAGG(b,';') WITHIN GROUP(ORDER BY b) FROM listagg_t1 group by a; a | listagg ---+------------------- 1 | 2.222000;3.333000 2 | 4.444000;5.555000 3 | 6.666000 | 1.111000 (4 rows) gaussdb=# DROP TABLE listagg_t1; 聚集列是时间类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE listagg_t1(a int, b timestamp); gaussdb=# INSERT INTO listagg_t1 VALUES (NULL,'2000-01-01'),(1,'2000-02-02'),(1,'2000-03-03'),(2,'2000-04-04'),(2,'2000-05-05'),(3,'2000-06-06'); gaussdb=# SELECT a,LISTAGG(b,';') WITHIN GROUP(ORDER BY b) FROM listagg_t1 group by a; a | listagg ---+----------------------------------------- 1 | 2000-02-02 00:00:00;2000-03-03 00:00:00 2 | 2000-04-04 00:00:00;2000-05-05 00:00:00 3 | 2000-06-06 00:00:00 | 2000-01-01 00:00:00 (4 rows) gaussdb=# DROP TABLE listagg_t1; 聚集列是时间间隔类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE listagg_t1(a int, b interval); gaussdb=# INSERT INTO listagg_t1 VALUES (NULL,'1 days'),(1,'2 days'),(1,'3 days'),(2,'4 days'),(2,'5 days'),(3,'6 days'); gaussdb=# SELECT a,LISTAGG(b,';') WITHIN GROUP(ORDER BY b) FROM listagg_t1 group by a; a | listagg ---+--------------- 1 | 2 days;3 days 2 | 4 days;5 days 3 | 6 days | 1 day (4 rows) gaussdb=# DROP TABLE listagg_t1; 分隔符缺省时,默认为空。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE listagg_t1(a int, b interval); gaussdb=# INSERT INTO listagg_t1 VALUES (NULL,'1 days'),(1,'2 days'),(1,'3 days'),(2,'4 days'),(2,'5 days'),(3,'6 days'); gaussdb=# SELECT a,LISTAGG(b) WITHIN GROUP(ORDER BY b) FROM listagg_t1 group by a; a | listagg ---+-------------- 1 | 2 days3 days 2 | 4 days5 days 3 | 6 days | 1 day (4 rows) gaussdb=# DROP TABLE listagg_t1; listagg作为窗口函数时,OVER子句不支持ORDER BY的窗口排序,listagg列为对应分组的有序聚集。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 gaussdb=# CREATE TABLE listagg_t1(a int, b interval); gaussdb=# INSERT INTO listagg_t1 VALUES (NULL,'1 days'),(1,'2 days'),(1,'3 days'),(2,'4 days'),(2,'5 days'),(3,'6 days'); gaussdb=# SELECT a,LISTAGG(b) WITHIN GROUP(ORDER BY b) OVER(PARTITION BY a) FROM listagg_t1; a | listagg ---+-------------- 1 | 2 days3 days 1 | 2 days3 days 2 | 4 days5 days 2 | 4 days5 days 3 | 6 days | 1 day (6 rows) gaussdb=# DROP TABLE listagg_t1;
  • count(expression) 描述:返回表中满足expression不为NULL的行数。 返回类型:BIGINT 支持对XML类型数据操作。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE count_t1(a int, b int); gaussdb=# INSERT INTO count_t1 VALUES (NULL,1),(1,2),(2,3),(3,4),(4,5); gaussdb=# SELECT COUNT(a) FROM count_t1; count ------- 4 (1 row) gaussdb=# DROP TABLE count_t1;
  • count(*) 描述:返回表中的记录行数。 返回类型:BIGINT 支持对XML类型数据操作。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# CREATE TABLE count_t1(a int, b int); gaussdb=# INSERT INTO count_t1 VALUES (NULL,1),(1,2),(2,3),(3,4),(4,5); gaussdb=# SELECT COUNT(*) FROM count_t1; count ------- 5 (1 row) gaussdb=# DROP TABLE count_t1;
  • KEEP(DENSE_RANK { FIRST | LAST } ORDER BY expr) 描述:描将查询结果的数据行按指定规则进行排序,返回第一组或者最后一组的值,可用于聚集函数或窗口函数。 语法: aggregate_function KEEP ( DENSE_RANK { FIRST | LAST } ORDER BY expr [ DESC | ASC ] [ NULLS { FIRST | LAST } ] [, expr [ DESC | ASC ] [ NULLS { FIRST | LAST } ]]...) 返回值类型: 在aggregate_function中指定列的数据类型。 aggregate_function为聚集函数,当前仅支持:MIN、MAX、SUM、AVG、COUNT、VARIANCE和STDDEV。 KEEP关键字用于语义清晰,限定于聚集函数/窗口函数。 DENSE_RANK FIRST或DENSE_RANK LAST表示仅聚集最小(FIRST)或最大(LAST)密集排序后的行。 不支持生成向量化计划执行 。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE TABLE keep_t1(a int, b int, c int); gaussdb=# INSERT INTO keep_t1 values(2, 111, 333), (2, 11, 33), (2, 11, 3), (1, 22, 55), (1, 2, 5); gaussdb=# SELECT MIN(b) KEEP(DENSE_RANK FIRST ORDER BY a) MIN_FIRST, MIN(b) KEEP(DENSE_RANK LAST ORDER BY a) MIN_LAST, MAX(b) KEEP(DENSE_RANK FIRST ORDER BY a) MAX_FIRST, MAX(b) KEEP(DENSE_RANK LAST ORDER BY a) MAX_LAST FROM keep_t1; min_first | min_last | max_first | max_last -----------+----------+-----------+---------- 2 | 11 | 22 | 111 (1 row) gaussdb=# DROP TABLE keep_t1;
  • default(column_name) 描述:获取表字段的默认值。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 --创建兼容性MYSQL数据库。 gaussdb=# CREATE DATABASE gaussdb_m WITH DBCOMPATIBILITY 'MYSQL'; gaussdb=# \c gaussdb_m gaussdb_m=# CREATE TABLE t1(id int DEFAULT 100, name varchar(20) DEFAULT 'tt'); gaussdb_m=# INSERT INTO t1 VALUES(1,'test'); --执行查询。 gaussdb_m=# SELECT default(id), default(name) FROM t1; default | default ---------+--------- 100 | tt (1 row) --删除数据库。 gaussdb_m=# \c postgres gaussdb=# DROP DATABASE gaussdb_m; default函数仅在参数sql_compatibility='MYSQL'时生效。 表字段中不存在默认值时,default函数返回空值。 表字段是隐藏列(如xmin、cmin)时,default函数返回空值。 表字段是自增列时,default函数返回0。 GaussDB 支持分区表、临时表、多表连接查询默认值。 GaussDB支持查询列名包含字符串值节点(表示名称)和A_Star节点(表示出现“*”),如default(tt.t4.id)和default(tt.t4.*)。 GaussDB创建字段默认值时,如果没有检验字段类型的范围,使用default函数可能会报错。 字段的默认值是函数表达式时,GaussDB的default函数返回建表时字段的default表达式的计算值。
  • sum(expression) 描述:所有输入行的expression总和。 返回类型: 通常情况下输入数据类型和输出数据类型是相同的,但以下情况会发生类型转换: 对于SMALLINT或INT输入,输出类型为BIGINT。 对于BIGINT输入,输出类型为NUMBER 。 对于浮点数输入,输出类型为DOUBLE PRECISION。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 gaussdb=# CREATE TABLE tab(a int); CREATE TABLE gaussdb=# INSERT INTO tab values(1); INSERT 0 1 gaussdb=# INSERT INTO tab values(2); INSERT 0 1 gaussdb=# SELECT sum(a) FROM tab; sum ----- 3 (1 row) gaussdb=# DROP TABLE tab;
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全