• 【笔记】Oracle 窗口函数


    Oracle 窗口函数

    简单来说,窗口函数是分析函数的一种,通常可以理解成over()函数
    构成:函数名①() over(partition by 分组的列名 order by 排序的列名 XXX)
    XXX是指特殊使用的,比如rows,range等等

    例如: 
    SUM(a.amount) over(order by a.visited_on desc rows 1 preceding)
    SUM(a.amount) over(order by a.visited_on desc range 1 preceding)
    SUM(a.amount) over(order by a.visited_on ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
    (在力扣上看到的大佬写的)
    
    其中:rows和range分别表示选择后几行、选择数据范围
    rows between 中的一些参数代表意思
    preceding:往前
    following:往后
    current row:当前行
    unbounded:无边界,
    unbounded precending 表示从最前面的起点开始, 
    unbounded following:表示到最后面的终点
    

    函数名①一般来说有几种
    一种是聚合函数,像是sum、avg、count这种
    一种是排序函数(序列函数),像是rank、dense_rank、row_number这种
    一种是不好归类的,像是row_number这种行数范围的

    常用的函数使用

    sum() 求和
    max() 最大值
    min() 最小值
    avg() 平均值
    count() 统计数
    row_number() 按照大小进行排名,相同大小名次不一样,就是按照行号走下去
    rank() 按照大小进行排名,纯粹的排名,相同大小名次一样,会有名次的跳跃,即除了相同的,其余排名顺序与行号相同,第一名有十个,那第十一个就是第十一名
    dense_rank() 按照大小进行排名,相同大小名次一样,但是不会进行名次的跳跃,即第一名玩了就是第二名,就算第一名有十个,那第十一个也是第二名
    lag() 向上进行偏移对数据进行查询
    lead() 向下进行偏移对数据进行查询

    聚合函数用的比较少
    序列函数可参考:https://www.cnblogs.com/jokingremarks/p/16286637.html
    lag和lead可参考:https://www.cnblogs.com/jokingremarks/p/16622458.html

  • 相关阅读:
    我的python之路5
    我的python之路4
    我的python之路3
    我的python之路2
    我的python之路1
    AJAX 表单提交 文件上传
    PBKDF2WithHmacSHA1算法
    Ant 随想
    maven 启蒙
    HELLO WORLD
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/16633605.html
Copyright © 2020-2023  润新知