zoukankan      html  css  js  c++  java
  • Hive分组后取组内排名方法row_number

     

    今天遇到这样一个需求场景,要取出 每一种分类(a,b组合分类) 符合条件的日期(字段c) 距离现在最近的10个日期 的数据

    首先想到的是用sql筛选出符合某种条件的所有数据,这样的事情很简单

    然后用脚本(python)遍历每一种组合(a,b),然后按日期c倒序排序 取前10

    如果拿到这个数据后 还要去hive连表查询其他数据,那么上面的方法就比较麻烦,可能需要再取多次hive

    我们有没有sql的方法直接完成这样的事情呢?有的 我们可以用到row_number:

    with
    t_rank as (
            select 
                a,
                b,
                c, 
                Row_Number() OVER (partition by a,b ORDER BY c desc) rank 
            from t_test
        )
    
    select a,b,c from t_rank where rank <= 10
    

    下面就继续嵌套添加其他的sql逻辑吧  

  • 相关阅读:
    redis 学习笔记三
    hadoop 家族图
    hbase 笔记
    spark history server
    利用Intellij IDEA构建spark开发环境
    自己安装的工具版本
    hive读书笔记
    数据仓库元数据
    Spark RDD
    pg mysql 比较
  • 原文地址:https://www.cnblogs.com/lingear/p/8311495.html
Copyright © 2011-2022 走看看