• hive的分组排序 row_number


    hive中可用于分组排序的函数主要有:row_numberrankdense_rank,它们分别有不同的特点,关键词主要用到:partition by和order by等。

    【1】row_number:排序时给每一行分配唯一的顺序,相同行顺序也不同

    select 
        age,
        grade,
        row_number() over (partition by grade order by age desc) rn
    from
    (
    select
        age,
        grade
    from
        db_name.tb_name
    where
        [conditions]
    limit 50
    )

    第一列为age,第二列为grade,第三列为排序

    【2】rank:相同行会分配相同的顺序,但是接下来会跳跃排序

    select 
        age,
        grade,
        rank() over (partition by grade order by age desc) rn
    from
    (
    select
        age,
        grade
    from
        db_name.tb_name
    where
        [conditions]
    limit 50
    )

    第一列为age,第二列为grade,第三列为排序

    【3】dense_rank:为相同行分配同样的顺序,但是接下来的顺序也是连续的,不是跳跃的。

    select 
        age,
        grade,
        dense_rank() over (partition by grade order by age desc) rn
    from
    (
    select
        age,
        grade
    from
        db_name.tb_name
    where
        [conditions]
    limit 50
    )

    第一列为age,第二列为grade,第三列为排序

    【4】这三个函数使用的时候也可以直接排序,不先分组。【注意:这些窗函数的使用必须要有order by语句,不能只分组

    select 
        age,
        grade,
        row_number() over (order by age desc) rn  #同样可以用于rank, dense_rank函数
    from
    (
    select
        age,
        grade
    from
        db_name.tb_name
    where
        [conditions]
    limit 50
    )

    ##

  • 相关阅读:
    (5)html表单
    (4)html表格
    (3)HTML ”列表“、图片和超链接
    (1)html开头解说与案例演示
    学习web前端前感
    一、资源合并与压缩
    HTTP协议原理
    图解HTTP总结
    基于TypeScript从零重构axios
    元組
  • 原文地址:https://www.cnblogs.com/qi-yuan-008/p/12656054.html
Copyright © 2020-2023  润新知