Aggregate
Return Type | Name(Signature) | Description |
---|---|---|
BIGINT | count(*), count(expr), count(DISTINCT expr[, expr…]) | count(*) 统计总行数,包括含有NULL值的行 count(expr) 统计提供非NULL的expr表达式值的行数 count(DISTINCT expr[, expr…]) 统计提供非NULL且去重后的expr表达式值的行数 |
DOUBLE | sum(col), sum(DISTINCT col) | sum(col),表示求指定列的和,sum(DISTINCT col)表示求去重后的列的和 |
DOUBLE | avg(col), avg(DISTINCT col) | avg(col),表示求指定列的平均值,avg(DISTINCT col)表示求去重后的列的平均值 |
DOUBLE | min(col) | 求指定列的最小值 |
DOUBLE | max(col) | 求指定列的最大值 |
DOUBLE | variance(col), var_pop(col) | 求指定列数值的方差 |
DOUBLE | var_samp(col) | 求指定列数值的样本方差 |
DOUBLE | stddev_pop(col) | 求指定列数值的标准偏差 |
DOUBLE | stddev_samp(col) | 求指定列数值的样本标准偏差 |
DOUBLE | covar_pop(col1, col2) | 求指定列数值的协方差 |
DOUBLE | covar_samp(col1, col2) | 求指定列数值的样本协方差 |
DOUBLE | corr(col1, col2) | 返回两列数值的相关系数 |
DOUBLE | percentile(BIGINT col, p) | 返回col的p%分位数 |
arrary | collect_set(col) | 配合group by 或者开窗使用,形成一个不可重复的集合 |
arrary | collect_list(col) | 配合group by 或者开窗使用,形成一个不可重复的集合 |
Analytic
cume_dist() | 小于等于当前行的值的行数/分组内总行数–比如,统计小于等于当前薪水的人数,所占总人数的比例 | |
---|---|---|
dense_rank() OVER([partition_by_clause] order_by_clause) | 连续排序,如果有两个第一级别时,接下来是第二级别 | |
first_value(expr) OVER([partition_by_clause] order_by_clause [window_clause]) | 取分组内排序后,截止到当前行,第一个值 | |
lag(expr [, offset] [, default]) OVER ([partition_by_clause] order_by_clause) | LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值,第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL) | |
last_value(expr) OVER([partition_by_clause] order_by_clause [window_clause]) | 取分组内排序后,截止到当前行,最后一个值 | |
lead(expr [, offset] [, default]) OVER([partition_by_clause] order_by_clause) | 用于统计窗口内往下第n行值,第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL) | |
ntile() | 它把有序的数据集合 平均分配 到 指定的数量(num)个桶中, 将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。 | |
percent_rank() | 分组内当前行的RANK值-1/分组内总行数-1 | |
rank() OVER([partition_by_clause] order_by_clause) | 跳跃排序,如果有两个第一级别时,接下来是第三级别 | |
row_number() OVER([partition_by_clause] order_by_clause) | 排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。 |
Collection
Return Type | Name(Signature) | Description |
---|---|---|
int | size(Map<K.V>) | 求map的长度 |
int | size(Array) | 求数组的长度 |
array | map_keys(Map<K.V>) | 返回map中的所有key |
array | map_values(Map<K.V>) | 返回map中的所有value |
boolean | array_contains(Array, value) | 如该数组Array包含value返回true,否则返回false |
array | sort_array(Array) | 按自然顺序对数组进行排序并返回 |
Complex Type
array | array(val1, val2, …) | 创建一个数组 |
---|---|---|
union | create_union(tag, val1, val2, …) | 创建一个union |
map | map(key1, value1, …) | 创建一个map |
struct | named_struct(name1, |