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

  • 相关阅读:
    性能测试-如何进行监控设计
    Java中关键字packag和import的使用
    树结构工具-TreeUtil使用
    Gem5模拟器学习之旅——翻译自官网
    【讲解下Gitea】
    你以为Shell只是命令行?读懂这篇文,给你的工作赋能
    Elasticsearch初探
    无胁科技-TVD每日漏洞情报-2022-11-9
    使用扩展运算符(...)合并数组
    Docker-compose
  • 原文地址:https://blog.csdn.net/Laoddaaa/article/details/126350149