gpt4 book ai didi

hadoop - 在HIVE中使用别名进行转换

转载 作者:行者123 更新时间:2023-12-02 21:02:11 25 4
gpt4 key购买 nike

我有一个名为贷款的表格,其中包含贷款金额,年收入,年份(MMM-YY格式)和成员(member)ID。我正在尝试查找年收入和成员(member)ID详细信息中一年中最高的贷款额。

我尝试使用代码按年份分组最高贷款额

select max(cast(loan_amt as int)),issue_d from loan group by issue_d;

然后我还想获取成员(member)ID和年收入信息,所以我编写了以下代码

但它给我错误消息,为列使用别名使用。

码:
select a.loan_amt,a.member_id,a.annual_inc,a.issue_d
from
(select loan_amt,member_id,annual_inc,issue_d from loan) a
join
(select max(cast(loan_amt as int)) as ml,issue_d from loan group by issue_d) c
where ((a.issue_d=c.issue_d) and (a.loan_amt=a.ml));

最佳答案

您想要做的是排名基于每个期间的金额的记录,然后仅保留每个期间的前1条记录。
使用专门为此目的设计的analytic functions之一-Hive在该主题上对SQL标准有很好的支持。

由于您没有说要处理关系(即如果几笔贷款的金额相同,该怎么办???),我假设您只希望随机选择一个记录...

select X, Y, Z, Period, Amount as TopAmount
from
(select X, Y, Z, Period, cast(StrAmt as double) as Amount,
row_number() over (partition by Period order by cast(StrAmt as double) desc) as TmpRank
from WTF
) TMPWTF
where TmpRank =1

如果您希望所有记录都具有最高金额,则将 row_number替换为 rankdense_rank(“密集”的东西会影响前2位,但不会影响前1位)

关于hadoop - 在HIVE中使用别名进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42984753/

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