大发幸运飞艇_大发幸运飞艇官网

Hive实现分组排序或者分页

时间:2020-01-15 18:29:46 出处:大发幸运飞艇_大发幸运飞艇官网

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

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

7           40          4430.00

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

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

7           40          4430.00                                1

empid       deptid      salary                                  rank

4           20          430.00

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

4           20          430.00                                 1

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

insert into employee values(9,30,730.00);

SQL脚本:

数据显示为:

2           10          430.00

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

2           10          430.00                                 2

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

empid       deptid      salary

预期结果:

3           20          1900.00                                 2

9           30          730.00                                 1

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

6           40          1430.00                                2

8           30          630.00                                 2

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

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

insert into employee values(8,30,630.00);

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

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

简单的说row_number()从1结束,为每三根分组记录返回两个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序之后的没条xlh记录返回两个序号。 

1           10          530.00                                 1

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

1           10          530.00

9           30          730.00

3           20          1900.00

6           40          1430.00

8           30          630.00

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

5           40          630.00                                 3

5           40          630.00

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

初始化数据:

热门

热门标签