• 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() 会根据顺序计算

  • 相关阅读:
    Allegro如何输出EMN文件操作指导
    Linux基本认识及指令
    CVE-2020-1938 Tomcat远程文件包含漏洞
    项目管理到底管的是什么?
    Java多线程:CopyOnWriteArrayList 实现原理
    为 HttpClient 注册自定义请求标头
    java代理相关知识
    C++ 字母异位词分组
    2022年10月21日数据库实验内容
    SAP SMARTFORMS 文本框显示默认浏览器
  • 原文地址:https://blog.csdn.net/Laoddaaa/article/details/126350149