1. 概述
本文介绍 SparkSQL 中的聚合函数语法。
2. COUNT-统计个数
示例原表如下图所示:
count(*):统计检索出的行的个数,包括 NULL 值的行。
在 SparSQL 中使用语句:select COUNT(*) from DB表输入-副本,得到统计的检索行个数,如下图所示:
注:其中查询的数据表、字段需要根据输入提示手动选择,不能直接输入。
count(expr):返回指定字段 expr 的非空值的个数。
在 SparSQL 中使用语句:select COUNT(`货主地区` ) from DB表输入-副本,得到统计「货主地区」字段非空值的个数,如下图所示:
count(DISTINCT expr[, expr_.]):返回字段 expr 是唯一的且非 NULL 的行的数量。
在 SparSQL 中使用语句:select count(DISTINCT `货主名称` ) FROM DB表输入,得到统计「货主地区」字段非空值且去重的个数,如下图所示:
3. SUM-总和统计
示例原表如下图所示:
sum(col):对指定列求和(包含重复值)。
在 SparSQL 中使用语句:
select `运货商`,sum( `应付金额` )
from DB表输入
group by `运货商`
得到统计「运货商」字段的「应付金额」汇总值,如下图所示:
注:其中查询的数据表、字段需要根据输入提示手动选择,不能直接输入。
sum(DISTINCT col):对指定列求和(不包含重复值)。
在 SparSQL 中使用语句:
select `运货商`,sum(DISTINCT `应付金额` )
from DB表输入
group by `运货商`
得到统计「运货商」字段去重的「应付金额」汇总值,如下图所示:
得到以下结果:
4. AVG-平均值统计
示例原表如下图所示:
avg(col):对指定列求平均值者(包含重复值)。
在 SparSQL 中使用语句:
select `运货商`,avg( `应付金额` )
from DB表输入
group by `运货商`
得到统计「运货商」字段的「应付金额」平均值,如下图所示:
注:其中查询的数据表、字段需要根据输入提示手动选择,不能直接输入。
avg(DISTINCT col):对指定列元素求平均值者(不包含重复值)。
在 SparSQL 中使用语句:
select `运货商`,avg(distinct `应付金额` )
from DB表输入
group by `运货商`
得到统计「运货商」字段去重的「应付金额」平均值,如下图所示:
5. MIN-最小值统计
示例原表如下图所示:
min(col):返回指定列的最小值。
在 SparSQL 中使用语句:select min(`应付金额` ) from DB表输入,如下图所示:
注:其中查询的数据表、字段需要根据输入提示手动选择,不能直接输入。
6. MAX-最大值
示例原表如下图所示:
max(col):返回指定列的最大值。
在 SparSQL 中使用语句:select max(`应付金额` ) from DB表输入,如下图所示:
注:其中查询的数据表、字段需要根据输入提示手动选择,不能直接输入。
7. VARIANCE-方差
原数据表如下图所示:
variance(col):返回指定列数值的样本方差,多用于统计学。
示例:select variance(`单价` ),variance(`进价` ) from DB表输入,结果如下图所示:
var_pop(col):返回指定列数值的总体方差。
示例:select var_pop(`单价` ),var_pop(`进价` ) from DB表输入,结果如下图所示:
var_samp(col):返回指定列数值的样本方差。
示例:select var_samp(`单价` ),var_samp(`进价` ) from DB表输入,结果如下图所示:
8. STDDEV_POP-标准差
原数据表如下图所示:
stddev_pop(col):求指定列数值的标准偏差。
示例:select stddev_pop(`单价` ),stddev_pop(`进价`) from DB表输入,结果如下图所示:
stddev_samp(col):求指定列数值的样本标准偏差。
示例:select stddev_samp(`单价` ),stddev_samp(`进价`) from DB表输入,结果如下图所示:
9. COVAR_POP-协方差
原数据表如下图所示:
covar_pop(col1, col2):求指定列数值的总体协方差。
示例:select covar_pop(`单价` ,`进价`) from DB表输入,结果如下图所示:
covar_samp(col1, col2):求指定列数值的样本协方差。
示例:select covar_samp(`单价` ,`进价`) from DB表输入,结果如下图所示:
10. CORR-相关系数
原数据表如下图所示:
corr(col1, col2):返回两列数值的相关系数。
示例:select corr(`单价` ,`进价`) from DB表输入,结果如下图所示:
11. PERCENTILE-取p%分位数
原数据表如下图所示:
percentile(col, p):返回 col 的 p%分位数。
col 列为 int 型;p 取值 0~1;percentile(col, 0.5):取中位数。
示例:select percentile(`单价` ,0.5) from DB表输入,结果如下图所示:
12. collect_list-返回数组
主要用于生成数组
collect_list ( expr))。expr为字段名
示例:例如想要将 JSON 对象列生成为数组列,则可以使用 concat_ws 和 collect_list 组合。
原对象列数据如下图所示(数据表名称为 JSON生成):
使用公式:SELECT CONCAT("[",concat_ws(",",collect_list(`JSON_DATA`)),"]") as a from JSON生成,即将 JSON_DATA 字段生成为数组形式,如下图所示:
注:JSON生成表需要手动点击输入源下的数据表。