SparkSQL聚合函数

  • Last update: August 28, 2023
  • 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生成表需要手动点击输入源下的数据表。

    附件列表


    主题: 数据开发
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy