zoukankan      html  css  js  c++  java
  • 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
    )

    ##

  • 相关阅读:
    vue脚手架项目配置后端接口(mock数据)
    list添加删除动画(transition-group)
    fast mock官网mock数据
    vuex日志插件(createLogger)
    环形进度条
    程序员的周末生活
    hbase错误之Region in transition异常解决
    不同虚拟机之间的文件传递
    windows上链接虚拟机
    hadoop——yarn
  • 原文地址:https://www.cnblogs.com/qi-yuan-008/p/12656054.html
Copyright © 2011-2022 走看看