zoukankan      html  css  js  c++  java
  • hive row_number等窗口分析函数

    一、排序&去重分析

    row_number() over(partititon by col1 order by col2) as rn

    结果:1,2,3,4

    rank() over(partititon by col1 order by col2) as rk

    结果:1,2,2,4,5

    dense_rank() over(partititon by col1 order by col2) as ds_rk

    结果:1,2,2,3,4

    select 
            order_id,
            departure_date,
            row_number() over(partition by order_id order by departure_date) as rn,  -- 直排
            rank() over(partition by order_id order by departure_date) as rk,        -- 并列的,下一个数字会跳过
            dense_rank() over(partition by order_id order by departure_date) as d_rk -- 并列的,下一个数据不会跳过
      from ord_test 
     where order_id=410341346
    ;

    运行结果:

    二、跨行获取  

    lag(col1,n,DEFAULT) over(partition by col1 order by col2) as up
    用于统计窗口内往上第n行值,第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

    lead(col1,n,DEFAULT) over(partition by col1 order by col2) as down
    用于统计窗口内往下第n行值,第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)

    first_value() over(partition by col1 order by col2) as fv
    取分组内排序后,截止到当前行,第一个值

    last_value() over(partition by col1 order by col2) as lv
    取分组内排序后,截止到当前行,第一个值

    select 
           order_id,
           departure_date,
           first_value(departure_date) over(partition by order_id order by add_time)as fv,  -- 取分组内第一条
           last_value(departure_date) over(partition by order_id order by add_time)as lv    -- 取分组内最后一条  
      from ord_test
     where order_id=410341346
    ;
    
    select 
           order_id,
           departure_date,
           lead(departure_date,1) over(partition by order_id order by departure_date)as down_1, -- 向下取一级
           lag(departure_date,1) over(partition by order_id order by departure_date)as up_1     -- 向上取一级
      from ord_test
     where order_id=410341346
    ;

    结果截图:

  • 相关阅读:
    20190211 模拟训练 A. 大猫咪
    如何诊断节点重启问题
    诊断 Grid Infrastructure 启动问题 (文档 ID 1623340.1)
    bzoj4025 二分图
    root.sh脚本支持checkpoints文件实现重复运行
    [IOI2018] seats 排座位
    最常见的 5 个导致节点重新启动、驱逐或 CRS 意外重启的问题 (文档 ID 1524455.1)
    [IOI2018] werewolf 狼人
    OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)
    [POI2011]ROT-Tree Rotations
  • 原文地址:https://www.cnblogs.com/kimbo/p/8445395.html
Copyright © 2011-2022 走看看