Hive实现分组排序或者分页

  • 时间:
  • 浏览:0
  • 来源:大发彩神计划版网址—大发彩神稳赢计划

insert into employee values(3,20,1900.00);

SELECT *, row_number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee

empid       deptid      salary

7           40          441150.00

初始化数据:

简单的说row_number()从1开始英文,为每一根绳子 分组记录返回一另有有1个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序事先的没条xlh记录返回一另有有1个序号。 

8           150          61150.00                                 2

基于row_number函数也很容易实现分页:

7           40          441150.00                                1

SQL脚本:

----------- ----------- ---------------------------------------

9           150          71150.00

9           150          71150.00                                 1

6           40          141150.00

insert into employee values(1,10,51150.00);

empid       deptid      salary                                  rank

----------- ----------- --------------------------------------- --------------------

需求:根据部门分组,显示每个部门的工资等级

3           20          1900.00

8           150          61150.00

insert into employee values(8,150,61150.00);

使用到的语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

insert into employee values(9,150,71150.00);

4           20          41150.00                                 1

insert into employee values(4,20,41150.00);

select * from (select row_number() over (order by empid desc) as rnum ,TableName.* from TableName)t where rnum >= 1 and rnum <= 5;

4           20          41150.00

2           10          41150.00

1           10          51150.00                                 1

5           40          61150.00                                 3

3           20          1900.00                                 2

5           40          61150.00

数据显示为:

6           40          141150.00                                2

create table employee (empid int ,deptid int ,salary decimal(10,2));

insert into employee values(7,40,441150.00);

2           10          41150.00                                 2

insert into employee values(5,40,61150.00);

insert into employee values(6,40,141150.00);

预期结果:

insert into employee values(2,10,41150.00);

表示根据COL1分组,在分组实物根据 COL2排序,而此函数计算的值就表示每组实物排序后的顺序编号(组内连续的唯一的)实例:

1           10          51150.00