• Hive的开窗函数和Rank


    开窗函数

    over():指定分析函数工作的数据窗口的大小,这个窗口大小可能会跟随行的变化而变化
    (1) CURRENT ROW:当前行
    (2) n PRECEDING:往前 n 行数据
    (3) n FOLLOWING:往后 n 行数据
    (4) UNBOUNDED : 起 点 , UNBOUNDED PRECEDING 表 示 从 前 面 的 起 点 , UNBOUNDED FOLLOWING 表示到后面的终点
    (5) LAG(col,n):往前第 n 行数据 (6)LEAD(col,n):往后第 n 行数据 (7) NTILE(n):把有序分区中的行分发到指定数据的组中,各个组有编号,编号从 1 开始,对于每一行,NTILE 返回此行所属的组的编号。注意:n 必须为 int 类型。
    rows 必须跟在 order by 子句之后,对排序的结果进行限制,使用固定的行数来限制分区中的数据行数量

    select name,orderdate,cost,
    sum(cost) over() as sample1,--所有行相加
    sum(cost) over(partition by name) as sample2,--按 name 分组,组内数据相加
    sum(cost) over(partition by name order by orderdate) as sample3,--按 name
    分组,组内数据累加
    sum(cost) over(partition by name order by orderdate rows between 
    UNBOUNDED PRECEDING and current row ) as sample4 ,--和 sample3 一样,由起点到
    当前行的聚合
    sum(cost) over(partition by name order by orderdate rows between 1 
    PRECEDING and current row) as sample5, --当前行和前面一行做聚合
    sum(cost) over(partition by name order by orderdate rows between 1 
    PRECEDING AND 1 FOLLOWING ) as sample6,--当前行和前边一行及后面一行
    sum(cost) over(partition by name order by orderdate rows between current 
    row and UNBOUNDED FOLLOWING ) as sample7 --当前行及后面所有行
    from business;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    Rank函数

    (1)RANK() 排序相同时会重复,总数不会变
    (2)DENSE_RANK() 排序相同时会重复,总数会减少
    (3)ROW_NUMBER() 会根据顺序计算

  • 相关阅读:
    前端-(4)
    蓝牙芯片香薰机智能化方案
    如何使用 React Native 构建信用卡扫描仪
    有趣的手机软件分享,感兴趣的朋友来瞧瞧
    女朋友说:你要搞懂了MySQL三大日志,我就让你嘿嘿嘿!
    C++学习笔记1——链接器工具错误 LNK2005
    木犀草素-mPEG-PLGA载药纳米粒|葛根素HA/PEG-PLGA纳米粒|盐酸维拉帕米PLGA纳米粒(齐岳bio)
    设计模式-门面模式
    Java八股文
    从Element日期组件源码中学到的两个工具方法
  • 原文地址:https://blog.csdn.net/Laoddaaa/article/details/126350149