gpt4 book ai didi

sql - “Hive” 多列的最大列值

转载 作者:可可西里 更新时间:2023-11-01 15:49:20 27 4
gpt4 key购买 nike

您好:我有一种情况需要在 3 个计算字段中找到最大值并将其存储在另一个字段中,是否可以在一个 SQL 查询中完成?下面是例子

SELECT Income1 ,
Income1 * 2% as Personal_Income ,
Income2 ,
Income2 * 10% as Share_Income ,
Income3 ,
Income3 * 1% as Job_Income ,
Max(Personal_Income, Share_Income, Job_Income )
From Table

我尝试的一种方法是在我使用的第一遍和第二遍中计算 Personal_Income、Share_Income、Job_Income

Select 
Case when Personal_income > Share_Income and Personal_Income > Job_Income
then Personal_income
when Share_income > Job_Income
then Share_income
Else Job_income as the greatest_income

但这需要我对十亿行表进行 2 次扫描,我怎样才能避免这种情况并一次性完成?非常感谢任何帮助。

最佳答案

从 Hive 1.1.0 开始,您可以使用 greatest() 函数。此查询将在单个表扫描中执行:

select Income1 ,
Personal_Income ,
Income2 ,
Share_Income ,
Income3 ,
Job_Income ,
greatest(Personal_Income, Share_Income, Job_Income ) as greatest_income
from
(
SELECT Income1 ,
Income1 * 2% as Personal_Income ,
Income2 ,
Income2 * 10% as Share_Income ,
Income3 ,
Income3 * 1% as Job_Income ,
From Table
)s
;

关于sql - “Hive” 多列的最大列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52206323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com