大数据经典面试题之 -- HQL编写 每个人所在公司几个月领钱金额最大的是多少,迄今为止领了多少钱

一、数据如下:
A,2015-01,5
A,2015-02,15
A,2015-03,5
A,2015-04,8
A,2015-05,25
A,2015-06,5
B,2015-01,4
B,2015-02,6
B,2015-03,10
B,2015-04,5
C,2015-01,16
C,2015-02,22
C,2015-03,23
C,2015-04,10
C,2015-05,1

二、创建表t_access
create external table if not exists monthmoney(
name string comment '用户名',
month string comment '月份',
money int comment '单个月金额'
)
row format delimited fields terminated by ",";

三、导入数据
load data local inpath '/home/bigdata/text' into table monthmoney;

四、代码如下

select
a.name,
a.mnth,
max(money) over(partition by a.name order by a.mnth) as money1, --迄今为止单个月最大领了多少钱
sum(money) over(partition by a.name order by a.mnth) as money2  --这个人所在的几个月一共领了多少钱
from(
    select
    name,
    month(from_unixtime(unix_timestamp(month,'yyyy-MM'))) as mnth,
    money
    from monthmoney
)as a

五、结果如下

大数据经典面试题之 -- HQL编写 每个人所在公司几个月领钱金额最大的是多少,迄今为止领了多少钱_第1张图片

六、这里有个问题:用sortby 为什么报错?? order 只用一个reduce 这则么优化?

你可能感兴趣的:(第5维度,hadoop,面试题解决)