聚合函数

          PALO

          聚合函数

          聚合函数的行为是将多行的结果聚合成一行。

          Doris 支持以下聚合函数:

          1.avg
          2.count
          3.approx_count_distinct
          4.max
          5.min
          6.sum
          7.group_concat
          8.variance_samp
          9.variance_pop
          10.percentile_approx
          11.topn

          BITMAP 和 HLL 类型相关的聚合函数,请参阅 BITMAP函数 以及 HLL函数

          AVG

          Description

          avg(numeric val)
          • 功能:该聚合函数返回集合中的平均数。该函数只有1个参数,该参数可以是数字类型的列,返回值是数字的函数,或者计算结果是数字的表达式。包含NULL值的行将被忽略。如果该表是空的或者AVG 的参数都是NULL,则该函数返回NULL。当查询指定使用 GROUP BY 从句时,则每个 GROUP BY 的值都会返回1条结果。
          • 返回类型: double类型

          Example

          mysql> select ss_ticket_number, avg(ss_sales_price) from store_sales group by ss_ticket_number;
          +------------------+-----------------------+
          | ss_ticket_number | avg(`ss_sales_price`) |
          +------------------+-----------------------+
          |            28818 |             41.041875 |
          +------------------+-----------------------+

          Keywords

          avg

          COUNT

          Description

          count([distinct] col_name...)
          • 功能:该聚合函数返回满足要求的行的数目,或者非NULL行的数目。

            • COUNT(*) 会计算包含NULL 值的行。
            • COUNT(column_name)仅会计算非NULL值的行。
            • 用户可以同时使用COUNT函数和DISTINCT操作符,count(distinct col_name...)会先对数据去重,然后再计算多个列的组合出现的次数。
          • 返回类型:int类型

          Example

          mysql> select count(distinct tiny_column, short_column) from small_table;
          +-----------------------------------------------+
          | count(DISTINCT `tiny_column`, `short_column`) |
          +-----------------------------------------------+
          |                                             2 |
          +-----------------------------------------------+

          Keywords

          count

          APPROX_COUNT_DISTINCT

          Description

          approx_count_distinct(type col)
          • 功能:该聚合函数返回指定列的去重值。不同于 count(distinct) 方法,该函数使用 HyperLogLog 算法返回有误差的去重值,但效率比 count(distinct) 高。
          • 返回类型:int类型

          Example

          mysql> select approx_count_distinct(ss_ticket_number) from store_sales;
          +-------------------------------------------+
          | approx_count_distinct(`ss_ticket_number`) |
          +-------------------------------------------+
          |                                     46580 |
          +-------------------------------------------+

          Keywords

          approx_count_distinct

          MAX

          Description

          max(type col)
          • 功能:该聚合函数返回集合中的最大值。该函数和min函数的功能相反。该函数只有1个参数,该参数可以是数字类型的列,返回值是数字的函数,或者计算结果是数字的表达式。包含NULL值的行将被忽略。如果该表是空的或者MAX的参数都是NULL,则该函数返回NULL。当查询指定使用 GROUP BY 从句时,则每个 GROUP BY 的值都会返回1条结果。
          • 返回类型:和输入参数相同的类型。

          Example

          mysql> select ss_ticket_number, max(ss_sales_price) from store_sales group by ss_ticket_number;
          +------------------+-----------------------+
          | ss_ticket_number | max(`ss_sales_price`) |
          +------------------+-----------------------+
          |            28818 |                136.42 |
          +------------------+-----------------------+

          Keywords

          max

          MIN

          Description

          min(type col)
          • 功能:该聚合函数返回集合中的最小值。该函数和max函数的功能相反。该函数只有1个参数,该参数可以是数字类型的列,返回值是数字的函数,或者计算结果是数字的表达式。包含NULL 值的行将被忽略。如果该表是空的或者MIN 的参数都是NULL,则该函数返回NULL。当查询指定使用 GROUP BY 从句时,则每个 GROUP BY 的值都会返回1条结果。
          • 返回类型:和输入参数相同的类型。

          Example

          mysql> select ss_ticket_number, min(ss_sales_price) from store_sales group by ss_ticket_number;
          +------------------+-----------------------+
          | ss_ticket_number | min(`ss_sales_price`) |
          +------------------+-----------------------+
          |            28818 |                  0.91 |
          +------------------+-----------------------+

          Keywords

          min

          SUM

          Description

          sum(numeric col)
          • 功能:该聚合函数返回集合中所有值的和。该函数只有1个参数,该参数可以是数字类型的列,返回值是数字的函数,或者计算结果是数字的表达式。包含NULL值的行将被忽略。如果该表是空的或者MIN的参数都是NULL,则该函数返回NULL。当查询指定使用GROUP BY从句时,则每个GROUP BY` 的值都会返回1条结果。
          • 返回类型:如果参数整型,则返回BIGINT,如果参数是浮点型则返回double类型

          Example

          mysql> select ss_ticket_number, sum(ss_sales_price) from store_sales group by ss_ticket_number;
          +------------------+-----------------------+
          | ss_ticket_number | sum(`ss_sales_price`) |
          +------------------+-----------------------+
          |            28818 |            1971980.01 |
          +------------------+-----------------------+

          Keywords

          sum

          GROUP_CONCAT

          Description

          group_concat(col[, separator])
          • 功能:该聚合函数会返回1个字符串,该字符串是集合中所有字符串连接起来形成的新字符串。如果用户指定分隔符,则分隔符用来连接两个相邻行的字符串。
          • 返回类型:string类型
          • 使用说明:默认情况下,该函数返回1个覆盖所有结果集的字符串。当查询指定使用group by 从句时,则每个group by的值都会返回1条结果。

          Example

          mysql> select * from tbl;
          +------+------+
          | k1   | v1   |
          +------+------+
          |    1 | a    |
          |    1 | b    |
          |    1 | c    |
          +------+------+
          
          mysql> select k1, group_concat(v1) from tbl group by k1;
          +------+--------------------+
          | k1   | group_concat(`v1`) |
          +------+--------------------+
          |    1 | a, b, c            |
          +------+--------------------+
          
          mysql> select k1, group_concat(v1, '|') from tbl group by k1;
          +------+-------------------------+
          | k1   | group_concat(`v1`, '|') |
          +------+-------------------------+
          |    1 | a|b|c                   |
          +------+-------------------------+

          Keywords

          group_concat

          VARIANCE,VAR_SAMP,VARIANCE_SAMP

          Description

          variance(numeric val)
          var_samp(numeric val)
          variance_samp(numeric val)
          • 功能:该类聚合函数返回一组数的样本方差。这是一个数学属性,它表示值与平均值之间的距离。它作用于数值类型。variancevar_sampvariance_samp 的别名。
          • 返回类型:double类型

          Example

          mysql> select ss_ticket_number, variance(ss_sales_price) from store_sales group by ss_ticket_number;
          +------------------+----------------------------+
          | ss_ticket_number | variance(`ss_sales_price`) |
          +------------------+----------------------------+
          |            28818 |             1378.408511209 |
          +------------------+----------------------------+

          Keywords

          variance, var_samp, variance_samp

          VAR_POP,VARIANCE_POP

          Description

          var_pop(numeric val)
          variance_pop(numeric val)
          • 功能:该类聚合函数返回一组数的总体方差。这是一个数学属性,它表示值与平均值之间的距离。它作用于数值类型。var_popvariance_pop 的别名。
          • 返回类型:double类型

          Example

          mysql> select ss_ticket_number, variance_pop(ss_sales_price) from store_sales group by ss_ticket_number;
          +------------------+--------------------------------+
          | ss_ticket_number | variance_pop(`ss_sales_price`) |
          +------------------+--------------------------------+
          |            28818 |                 1378.408511134 |
          +------------------+--------------------------------+

          Keywords

          var_pop, variance_pop

          PERCENTILE_APPROX

          Description

          percentile_approx(numeric val, double percentile, double compression)
          • 功能:该类聚合函数采用 T-Digest 算法,返回一组数的指定分位值的近似值。分位值 percentile 需在 0-1 之间。compression 可以控制结果的精确度,取值范围在 2014 - 10000 之间。值越大,精度越高,到内存开销和耗时越大。默认为 2048。
          • 返回类型:double类型

          Example

          mysql> select percentile_approx(query_time, 0.95), percentile_approx(query_time, 0.99) from tbl limit 10;
          +---------------------------------------+---------------------------------------+
          | percentile_approx(`query_time`, 0.95) | percentile_approx(`query_time`, 0.99) |
          +---------------------------------------+---------------------------------------+
          |                    30.994913101196289 |                    116.05957794189453 |
          +---------------------------------------+---------------------------------------+
          
          mysql> select `table`, percentile_approx(cost_time,0.99) from log_statis group by `table`;
          +---------------------+---------------------------+
          | table    | percentile_approx(`cost_time`, 0.99) |
          +----------+--------------------------------------+
          | test     |                                54.22 |
          +----------+--------------------------------------+
          
          mysql> select `table`, percentile_approx(cost_time,0.99, 4096) from log_statis group by `table`;
          +---------------------+-----------------------------------+
          | table    | percentile_approx(`cost_time`, 0.99, 4096.0) |
          +----------+----------------------------------------------+
          | test     |                                        54.21 |
          +----------+----------------------------------------------+

          Keywords

          percentile_approx, percentile

          TOPN

          Description

          topn(expr, int top_num[, int space_expand_rate])
          • 功能:该topn函数使用Space-Saving算法计算expr中的top_num个频繁项,结果为频繁项及其出现次数,该结果为近似值。space_expand_rate 参数是可选项,该值用来设置 Space-Saving 算法中使用的 counter个数。space_expand_rate 的值越大,结果越准确,默认值为50。

            counter numbers = top_num * space_expand_rate
          • 返回类型:JSON 格式的字符串。

          Example

          mysql> select topn(time, 10) from tbl;
          +--------------------------------------------------------------------------------------------------------------------------+
          | topn(`time`, 10)                                                                                                         |
          +--------------------------------------------------------------------------------------------------------------------------+
          | {"0":7894391,"1":3887461,"2":3792601,"6":3344590,"5":2394986,"7":1421491,"3":1046929,"29":982826,"30":674072,"4":640616} |
          +--------------------------------------------------------------------------------------------------------------------------+
          
          mysql> select topn(time, 10, 100) from tbl;
          +--------------------------------------------------------------------------------------------------------------------------+
          | topn(`time`, 10, 100)                                                                                                    |
          +--------------------------------------------------------------------------------------------------------------------------+
          | {"0":7894592,"1":3887551,"2":3792700,"6":3344590,"5":2394986,"7":1421492,"3":1046977,"29":982826,"30":674072,"4":640625} |
          +--------------------------------------------------------------------------------------------------------------------------+

          Keywords

          topn
          上一篇
          注释
          下一篇
          位操作函数