目录
- 1.count(*), count(expr), count(DISTINCT expr[, expr...])
- 2.sum(col), sum(DISTINCT col)
- 3.avg(col), avg(DISTINCT col)
- 4.min(col)
- 5.max(col)
- 6.variance(col), var_pop(col)
- 7.var_samp(col)
- 8.stddev_pop(col)
- 9.stddev_samp(col)
- 10.covar_pop(col1, col2)
- 11.covar_samp(col1, col2)
- 12.corr(col1, col2)
- 13.percentile(BIGINT col, p)
- 14.percentile(BIGINT col, array(p1 [, p2]...))
- 15.percentile_approx(DOUBLE col, p [, B])
- 16.percentile_approx(DOUBLE col, array(p1 [, p2]...) [, B])
- 17.regr_avgx(independent, dependent)
- 18.regr_avgy(independent, dependent)
- 19.regr_count(independent, dependent)
- 20.regr_intercept(independent, dependent)
- 21.regr_r2(independent, dependent)
- 22.regr_slope(independent, dependent)
- 23.regr_sxx(independent, dependent)
- 24.regr_sxy(independent, dependent)
- 25.regr_syy(independent, dependent)
- 26.histogram_numeric(col, b)
- 27.collect_set(col)
- 28.collect_list(col)
- 29.ntile(INTEGER x)
- 参考
说明:本文中示例使用了TPC-DS中的表
1.count(*), count(expr), count(DISTINCT expr[, expr…])
返回值:BIGINT
功能:
count(*) 统计总行数,包括含有NULL值的行
count(expr) - 统计所提供表达式为non-NULL的行数
count(DISTINCT expr[, expr]) - 统计所提供expr表达式为非non-NULL且去重后的行数。
示例:
> select count(*) as f1 from store_sales limit 1
+-----------+
| f1 |
+-----------+
| 28800991 |
+-----------+
> select count(ss_ticket_number>100) as f1 from store_sales limit 1
+-----------+
| f1 |
+-----------+
| 28800991 |
+-----------+
2.sum(col), sum(DISTINCT col)
返回值:DOUBLE
功能:返回组中元素的和或组中列元素去重后的和
示例:
> select sum(ss_ticket_number) as f1 from store_sales limit 1
+-----------------+
| f1 |
+-----------------+
| 34562754977298 |
+-----------------+
> select sum(DISTINCT ss_ticket_number) as f1 from store_sales limit 1
+----------------+
| f1 |
+----------------+
| 2880001200000 |
+----------------+
3.avg(col), avg(DISTINCT col)
返回值:DOUBLE
功能:返回组中元素的平均值或组中列元素去重后的平均值
示例:
select avg(ss_ticket_number) as f1 from store_sales limit 1
+---------------------+
| f1 |
+---------------------+
| 1200054.3653965935 |
+---------------------+
select avg(DISTINCT ss_ticket_number) as f1 from store_sales limit 1
+------------+
| f1 |
+------------+
| 1200000.5 |
+------------+
4.min(col)
返回值:DOUBLE
功能:返回组中元素的最小值
示例:
select min(ss_ticket_number) as f1 from store_sales limit 1
+-----+
| f1 |
+-----+
| 1 |
+-----+
5.max(col)
返回值:DOUBLE
功能:返回组中元素的最大值
示例:
select max(ss_ticket_number) as f1 from store_sales limit 1
+----------+
| f1 |
+----------+
| 2400000 |
+----------+
6.variance(col), var_pop(col)
返回值:DOUBLE
功能:返回组中数值列的方差
示例:
select variance(ss_ticket_number) as f1 from store_sales limit 1
+-----------------------+
| f1 |
+-----------------------+
| 4.800567791493703E11 |
+-----------------------+
补充:方差的概念参考https://baike.baidu.com/item/%E6%96%B9%E5%B7%AE/3108412#2
7.var_samp(col)
返回值:DOUBLE
功能:返回组中数值列的无偏性样本方差。
示例:
select var_samp(ss_ticket_number) as f1 from store_sales limit 1
+------------------------+
| f1 |
+------------------------+
| 4.8005679581743494E11 |
+------------------------+
补充:样本方差参考https://baike.baidu.com/item/%E6%A0%B7%E6%9C%AC%E6%96%B9%E5%B7%AE/8991877#3
8.stddev_pop(col)
返回值:DOUBLE
功能:返回组中数值列的标准差。
示例:
select stddev_pop(ss_ticket_number) as f1 from store_sales limit 1
+-------------------+
| f1 |
+-------------------+
| 692861.298637303 |
+-------------------+
补充:标准差参考https://baike.baidu.com/item/%E6%A0%87%E5%87%86%E5%B7%AE
9.stddev_samp(col)
返回值:DOUBLE
功能:返回组中数值列的无偏性样本标准差。
示例:
select stddev_samp(ss_ticket_number) as f1 from store_sales limit 1
+--------------------+
| f1 |
+--------------------+
| 692861.3106657314 |
+--------------------+
补充:样本标准差参考https://baike.baidu.com/item/%E6%A0%B7%E6%9C%AC%E6%A0%87%E5%87%86%E5%B7%AE
10.covar_pop(col1, col2)
返回值:DOUBLE
功能:返回组中数值列的协方差
示例:
select covar_pop(ss_sold_date_sk, ss_sold_time_sk) as f1 from store_sales limit 1
+---------------------+
| f1 |
+---------------------+
| -4161.133752742163 |
+---------------------+
补充:协方差参考https://baike.baidu.com/item/%E5%8D%8F%E6%96%B9%E5%B7%AE
11.covar_samp(col1, col2)
返回值:DOUBLE
功能:返回组中一对数值列的样本协方差
示例:
select covar_samp(ss_sold_date_sk, ss_sold_time_sk) as f1 from store_sales limit 1
+---------------------+
| f1 |
+---------------------+
| -4161.133907682913 |
+---------------------+
12.corr(col1, col2)
返回值:DOUBLE
功能:返回组中一对数值列的皮尔逊相关系数
示例:
select corr(ss_sold_date_sk, ss_sold_time_sk) as f1 from store_sales limit 1
+------------------------+
| f1 |
+------------------------+
| -6.212088770354935E-4 |
+------------------------+
13.percentile(BIGINT col, p)
返回值:DOUBLE
功能:返回组中列的精确的第p百分位数(不适用于浮点类型)。p必须介于0和1之间。注意:只有整数值才能计算出确切的百分位数。如果输入为非整数,则使用PERCENTILE_APPROX
示例:
select percentile(ss_sold_time_sk,0.9) as f1 from store_sales limit 1
+----------+
| f1 |
+----------+
| 69302.0 |
+----------+
补充:百分位数参考https://baike.baidu.com/item/%E7%99%BE%E5%88%86%E4%BD%8D%E6%95%B0
14.percentile(BIGINT col, array(p1 [, p2]…))
返回值:array<double>
功能:返回组中列的第p1,p2等一系列的精确百分位数(不适用于浮点类型)。pi必须介于0和1之间。注意:只有整数值才能计算出确切的百分位数。如果输入为非整数,则使用PERCENTILE_APPROX
示例:
select percentile(ss_sold_time_sk,array(0.5,0.6)) as f1 from store_sales limit 1
+--------------------+
| f1 |
+--------------------+
| [51009.0,54026.0] |
+--------------------+
15.percentile_approx(DOUBLE col, p [, B])
返回值:DOUBLE
功能:返回组中列的第p的近似百分位数(也包括浮点类型)。参数B控制B以内存为代价的近似精度。更高的值产生更好的近似值,默认值是10000。当col中不同值的数目小于B时,将给出精确的百分位数值。
示例:
select percentile_approx(ss_sold_time_sk,0.5) as f1 from store_sales limit 1
+--------------------+
| f1 |
+--------------------+
| 51006.77779116558 |
+--------------------+
16.percentile_approx(DOUBLE col, array(p1 [, p2]…) [, B])
返回值:array<double>
功能:返回组中列的第p1,p2等一系列的近似百分位数(也包括浮点类型)。参数B控制B以内存为代价的近似精度。更高的值产生更好的近似值,默认值是10000。当col中不同值的数目小于B时,将给出精确的百分位数值。
示例:
select percentile_approx(ss_sold_time_sk,array(0.5,0.6),20000) as f1 from store_sales limit 1
+---------------------------------------+
| f1 |
+---------------------------------------+
| [51008.12716479356,54024.2662495729] |
+---------------------------------------+
17.regr_avgx(independent, dependent)
返回值:double
功能:线性回归函数,从所有非 NULL (Y, X) 值对返回 x 值的平均值,相当于 avg(dependent)(从Hive2.2.0开始)。
示例:
> select regr_avgx(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+---------------------+
| f1 |
+---------------------+
| 3597.8381188743324 |
+---------------------+
18.regr_avgy(independent, dependent)
返回值:double
功能:线性回归函数,从所有非 NULL (Y, X) 值对返回 y 值的平均值,相当于avg(independent)(从Hive2.2.0开始)。
示例:
> select regr_avgy(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+--------------------+
| f1 |
+--------------------+
| 960706.4812228354 |
+--------------------+
19.regr_count(independent, dependent)
返回值:double
功能:线性回归函数,返回输入中非 NULL (Y, X) 值对的数量。仅当给定对中的 X 和 Y 都为非 NULL 时,才应在所有线性回归计算中使用此观测(从Hive2.2.0开始)。
示例:
> select regr_count(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+-----------+
| f1 |
+-----------+
| 26856664 |
+-----------+
20.regr_intercept(independent, dependent)
返回值:double
功能:线性回归函数,计算可最佳拟合非独立和独立变量的线性回归线的 y 截距(从Hive2.2.0开始)。
示例:
> select regr_intercept(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+--------------------+
| f1 |
+--------------------+
| 960535.9918867329 |
+--------------------+
21.regr_r2(independent, dependent)
返回值:double
功能:线性回归函数,计算回归线的确定系数(也称为 R 平方或适配度统计)(从Hive2.2.0开始)。
示例:
> select regr_r2(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+------------------------+
| f1 |
+------------------------+
| 3.1563100103224406E-8 |
+------------------------+
22.regr_slope(independent, dependent)
返回值:double
功能:线性回归函数,计算拟合到非 NULL 数对的线性回归线的斜率(从Hive2.2.0开始)。
示例:
select regr_slope(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+---------------------+
| f1 |
+---------------------+
| 0.0473866056435987 |
+---------------------+
23.regr_sxx(independent, dependent)
返回值:double
功能:线性回归函数,返回 (Y, X) 对中 x 值的平方和(从Hive2.2.0开始)。
示例:
select regr_sxx(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+------------------------+
| f1 |
+------------------------+
| 1.1603130829852834E14 |
+------------------------+
24.regr_sxy(independent, dependent)
返回值:double
功能:线性回归函数,返回 (Y, X) 对集中两项积和的差值(从Hive2.2.0开始)。
示例:
select regr_sxy(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1;
+-----------------------+
| f1 |
+-----------------------+
| 5.498329848653175E12 |
+-----------------------+
25.regr_syy(independent, dependent)
返回值:double
功能:线性回归函数,返回 (Y, X) 对中 y 值的平方和(从Hive2.2.0开始)。
示例:
select regr_syy(ss_cdemo_sk,ss_hdemo_sk) as f1 from store_sales limit 1
+------------------------+
| f1 |
+------------------------+
| 8.2548034693822259E18 |
+------------------------+
26.histogram_numeric(col, b)
返回值:array<struct {‘x’,‘y’}>
功能:使用b个非均匀间隔的存储箱计算组中数值列的直方图。输出是一个大小为b的双值(x,y)坐标数组,分别表示箱的中心和高度。
> select histogram_numeric(ss_cdemo_sk,5) as f1 from store_sales limit 1;
+----------------------------------------------------+
| f1 |
+----------------------------------------------------+
| [{"x":201652.68480577026,"y":5704765.0},{"x":600796.1760687291,"y":5686302.0},{"x":975781.8771361593,"y":5174143.0},{"x":1345327.445891793,"y":5497374.0},{"x":1729487.277896256,"y":5442704.0}] |
+----------------------------------------------------+
27.collect_set(col)
返回值:array
功能:返回删除了重复元素的对象集
示例:
> select collect_set(ss_cdemo_sk) as f1 from store_sales limit 1;
--返回数据量太大,省略结果
28.collect_list(col)
返回值:array
功能:返回包含重复元素的对象列表
示例:
> select collect_list(ss_cdemo_sk) as f1 from store_sales limit 1;
--返回数据量太大,省略结果
29.ntile(INTEGER x)
返回值:INTEGER
功能:把有序的数据集合平均分配到指定的数量x个桶中, 将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。可以方便地计算三位数、四位数、十位数、百分位数和其他常见的汇总统计数据。
使用语法是:ntile (num) over ([partition_clause] order_by_clause) as your_bucket_num
示例:
> select cr_returned_date_sk,cr_returned_time_sk,ntile(10) over (order by cr_returned_time_sk desc) as f1 from catalog_returns limit 10;
+----------------------+----------------------+-----+
| cr_returned_date_sk | cr_returned_time_sk | f1 |
+----------------------+----------------------+-----+
| 2451421 | 86399 | 1 |
| 2452035 | 86399 | 1 |
| 2452017 | 86399 | 1 |
| 2451016 | 86399 | 1 |
| 2452240 | 86399 | 1 |
| 2452333 | 86398 | 1 |
| 2451486 | 86398 | 1 |
| 2451214 | 86398 | 1 |
| 2451165 | 86398 | 1 |
| 2452758 | 86398 | 1 |
+----------------------+----------------------+-----+
示例参考https://blog.csdn.net/zhangxianx1an/article/details/80609514
参考
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-Built-inAggregateFunctions(UDAF)
https://www.cnblogs.com/MOBIN/p/5618747.html#7
http://dcx.sybase.com/1101/zh/dbusage_zh11/ug-olap-s-6410540.html
http://dcx.sap.com/1101/zh/dbusage_zh11/ug-olap-s-51258144.html