我有一张名为贷款的表,贷款金额,年收入,年份(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));
答案 0 :(得分:0)
您要做的是排名基于金额的记录,每个期间,然后只保留每个期间的前1个记录。
使用专为此目的而设计的analytic functions之一 - Hive对该主题的SQL标准有很好的支持。
既然你没有说要怎么处理关系(即若几个贷款有相同金额怎么办?)我假设你只想要一个随机选择的记录 ......
row_number
如果您希望所有带有最高金额的记录,请将rank
替换为dense_rank
或s = "hello\nworld"
puts s
#=> hello
world
(“密集”的内容会对前2名,但不是前1名