impala进阶学习

Posted 桃桃琪的学习日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了impala进阶学习相关的知识,希望对你有一定的参考价值。

例表:

表名:table_a3

name score class
zhangsan 80 1
lisi 70 1
wangwu 80 1
liuliu 50 2
chenqi 99 2
zhaosan 100 1

窗口函数

1. 排序

rank函数:计算排序时,如果存在相同位次,跳过之后的位次。

dense_rank函数:计算排序时,如果存在相同位次,不跳过之后的位次。

row_number函数:赋予唯一的连续位次。

#order by相同的字段,随机排序不重复#row_number()over (partition by x order by xx) #row_number()over (partition by x order by xx nulls last) 把null放在最后面
select name,score,class,row_number()over(partition by class order by score desc) as rnfrom table_a3;#按照班级分类,每个班级按照score降序name score class rnzhaosan     100     1     1wangwu      80      1     2zhangsan    80      1     3lisi        70      1     4chenqi      99      2     1liuliu      50      2     2
#order by相同的字段,排序相同,下一顺序跳过#rank()over(partition by x order by xx
select name,score,class,rank()over(partition by class order by score descas rnfrom table_a3;#按照班级分类,每个班级按照score降序name score class rnzhaosan     100     1     1wangwu      80      1     2zhangsan    80      1     2lisi        70      1     4chenqi      99      2     1liuliu      50      2     2
#order by相同的字段,排序相同,下一顺序不跳过#dense_rank() over (partition by x order by xx) select name,score,class,dense_rank()over(partition by class order by score desc) as rnfrom table_a3;
name score class rnzhaosan 100 1 1wangwu 80 1 2zhangsan 80 1 2lisi        70      1     3chenqi 99 2 1liuliu 50 2 2
2. 聚合