Hive实现分组排序或者分页

  • 时间:
  • 浏览:0

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

数据显示为:

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

4           20          44000.00

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

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

3           20          1900.00

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

简单的说row_number()从1现在结束了了,为根小小分组记录返回有一一一两个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序已经 的没条xlh记录返回有一一一两个序号。 

6           40          144000.00                                2

5           40          64000.00

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

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

1           10          54000.00                                 1

9           400          74000.00                                 1

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

4           20          44000.00                                 1

预期结果:

3           20          1900.00                                 2

8           400          64000.00

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

2           10          44000.00

2           10          44000.00                                 2

1           10          54000.00

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

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

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

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

5           40          64000.00                                 3

insert into employee values(8,400,64000.00);

SQL脚本:

insert into employee values(9,400,74000.00);

初始化数据:

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

6           40          144000.00

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

8           400          64000.00                                 2

empid       deptid      salary                                  rank

7           40          444000.00

7           40          444000.00                                1

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

empid       deptid      salary

9           400          74000.00