hive null值排序

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值会被排在最后面

猜你喜欢

转载自blog.csdn.net/JAVA_LuZiMaKei/article/details/121608599
今日推荐