create table zgc_0903_test
(
name string,
money string,
update_time string
);
insert into table zgc_0903_test values
('AAA','200','2020-01-01 12:00:00')
,('AAA','260','2020-02-01 12:00:00')
,('BBB','100','2020-01-01 12:00:00')
,('BBB',NULL,'2020-02-01 12:00:00')
,('BBB',NULL,NULL)
,('CCC','300',NULL)
,('CCC','400',NULL)
,('DDD','100',NULL)
,('DDD','250','2020-02-01 12:00:00')
,(NULL,'260','2020-02-01 12:00:00')
,(NULL,'100','2020-01-01 12:00:00');
排正序
查询:
select *,row_number()over(partition by name order by update_time) rn from zgc_0903_test;
+---------------------+----------------------+----------------------------+-----+
| zgc_0903_test.name | zgc_0903_test.money | zgc_0903_test.update_time | rn |
+---------------------+----------------------+----------------------------+-----+
| NULL | 100 | 2020-01-01 12:00:00 | 1 |
| NULL | 260 | 2020-02-01 12:00:00 | 2 |
| AAA | 200 | 2020-01-01 12:00:00 | 1 |
| AAA | 260 | 2020-02-01 12:00:00 | 2 |
| BBB | NULL | NULL | 1 |
| BBB | 100 | 2020-01-01 12:00:00 | 2 |
| BBB | NULL | 2020-02-01 12:00:00 | 3 |
| CCC | 400 | NULL | 1 |
| CCC | 300 | NULL | 2 |
| DDD | 100 | NULL | 1 |
| DDD | 250 | 2020-02-01 12:00:00 | 2 |
+---------------------+----------------------+----------------------------+-----+
排倒序
查询:
select *,row_number()over(partition by name order by update_time desc) rn from zgc_0903_test;
+---------------------+----------------------+----------------------------+-----+
| zgc_0903_test.name | zgc_0903_test.money | zgc_0903_test.update_time | rn |
+---------------------+----------------------+----------------------------+-----+
| NULL | 260 | 2020-02-01 12:00:00 | 1 |
| NULL | 100 | 2020-01-01 12:00:00 | 2 |
| AAA | 260 | 2020-02-01 12:00:00 | 1 |
| AAA | 200 | 2020-01-01 12:00:00 | 2 |
| BBB | NULL | 2020-02-01 12:00:00 | 1 |
| BBB | 100 | 2020-01-01 12:00:00 | 2 |
| BBB | NULL | NULL | 3 |
| CCC | 400 | NULL | 1 |
| CCC | 300 | NULL | 2 |
| DDD | 250 | 2020-02-01 12:00:00 | 1 |
| DDD | 100 | NULL | 2 |
+---------------------+----------------------+----------------------------+-----+
结论:
排正序时,null值会被排在最前面
排倒序时,null值会被排在最后面