SparkSQL 聚合函数 MAX 对 NULL 值的处理

SparkSQL 聚合函数 MAX 对 NULL 值的处理

官网:https://spark.apache.org/docs/4.0.0/sql-ref-functions.html

https://spark.apache.org/docs/4.0.0/sql-ref-null-semantics.html#builtin-aggregate-expressions

在这里插入图片描述

MAX(column) 会自动忽略 NULL 值,只在非空值中寻找最大值。

  • 如果整列都是 NULL,则返回 NULL
  • 如果列中只有部分为 NULL,不影响最大值的计算。

Demo:

WITH data AS (
  SELECT * FROM VALUES
    (10),
    (20),
    (NULL)
  AS tab(col)
)
SELECT max(col) AS max_value FROM data;
-- 找到最大值 30,忽略所有 NULL 值。

在这里插入图片描述


WITH data AS (
  SELECT * FROM VALUES
    (NULL),
    (NULL),
    (NULL)
  AS tab(col)
)
SELECT max(col) AS max_value FROM data;
-- 没有任何有效值时,MAX() 返回 NULL。

在这里插入图片描述


MAX() 也适用于字符串。

WITH data AS (
  SELECT * FROM VALUES
    ('apple'),
    ('banana'),
    (NULL),
    ('cherry')
  AS tab(col)
)
SELECT max(col) AS max_value FROM data;
-- 字符串按照字典顺序排序,'cherry' 是最大的。

在这里插入图片描述


其它聚合函数:

函数如何处理 NULL
MAX(col)忽略 NULL,找最大值;全为 NULL 返回 NULL
MIN(col)忽略 NULL,找最小值;全为 NULL 返回 NULL
SUM(col)忽略 NULL,加总非空值;全为 NULL 返回 NULL
AVG(col)忽略 NULL,计算平均值;全为 NULL 返回 NULL
COUNT(col)只统计非 NULL 数量
COUNT(*)统计所有行数,包含 NULL

Spark官方对于各种函数处理null值的说明:

https://spark.apache.org/docs/4.0.0/sql-ref-null-semantics.html

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喻师傅

谢谢您!我会继续努力创作!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值