在HIVE中使用别名

时间:2017-03-23 18:59:25

标签: hadoop casting group-by hive alias

我有一张名为贷款的表,贷款金额,年收入,年份(MMM-YY格式)和会员ID。我试图找到一年中贷款额最高的机会年收入和会员ID详情。

我尝试使用代码

按年度对最高贷款金额进行分组
select max(cast(loan_amt as int)),issue_d from loan group by issue_d;

然后我还想获取会员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 个答案:

答案 0 :(得分:0)

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

既然你没有说要怎么处理关系(即若几个贷款有相同金额怎么办?)我假设你只想要一个随机选择的记录 ......

row_number

如果您希望所有带有最高金额的记录,请将rank替换为dense_ranks = "hello\nworld" puts s #=> hello world (“密集”的内容会对前2名,但不是前1名