[1175]hive函数greatest、least多列取最大最小值


用多了 max() 、min() 今天刚好遇到了需要取连续6年中营收最大的逻辑(6列)

greatest函数

  • 取多列最大值
select greatest(-99, 0, 73) --73
  • 存在 null 或者字符串
select greatest(-99, 0, 73, null) --null

select greatest(-99, 0, 73, 'string') --null
  • 存在日期
select greatest('2022-01-01','2022-06-01','2022-06-09') --2022-06-09
  • 但实际问题中很可能存在null,想了下,先把null做替换,然后再取多列最大
select customer_id,
    greatest(income_2016,income_2017,income_2018,income_2019,income_2020,income_2021) income
from
    (
    select customer_id,
        if(income_2016 is null,-9999999,income_2016) income_2016,
        if(income_2017 is null,-9999999,income_2017) income_2017,
        if(income_2018 is null,-9999999,income_2018) income_2018,
        if(income_2019 is null,-9999999,income_2019) income_2019,
        if(income_2020 is null,-9999999,income_2020) income_2020,
        if(income_2021 is null,-9999999,income_2021) income_2021
    from table
    ) a;

image.png

least函数

  • 取多列最小值
select least(-99, 0, 73) -- -99
  • 存在 null 或者字符串
select least(-99, 0, 73, null) --null

select least(-99, 0, 73, 'string') --null
  • 存在日期
select least('2022-01-01','2022-06-01','2022-06-09') -- 2022-01-01

参考:https://blog.csdn.net/szdxltt/article/details/125204552

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周小董

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值