1

开窗函数汇总

  Function(arg1)  over(partition by arg order by  arg <windows_expression>) 
1. 窗口函数  over() 后面的为窗口函数 ,sum这种为 分析函数.
    over()  : 指定分析函数工作的数据窗口大小,窗口会随着行进行变化.
    window_express:窗口的边界设置.默认:[rows between unbounded proceeding and current rows] 起点到当前行累加.
    partition by : 表示将数据先按照字段进行分区.
    order by  表示将各个分区内的数据按字段进行排序.
     .使用详解:
      ① 如果不指定partition by,则不对数据进行分区,换句话说,所有数据看作同一个分区。
      ② 如果不指定order by, 则不对各分区进行排序,通常用于那些顺序无关的窗口函数,如sum()。
      ③ 如果不指定窗口子句:
        不指定order by,默认使用分区内所有行,等同于
        Function() over(rows between unbounded precedeing and unbounded following)
        如果指定order by,默认使用分区内第起点到当前行,等同于
        Function() over(rows between unbounded preceding  and current row)


    1.排序函数
     row_number() over(partition by column order by  column  )
     rank() over(partition by column order by  column  )
     dense_rank() over(partition by column order by  column  )
     ntile()
    2.聚合函数
     sum()
     avg()
     count()
    3.
     lag()
     expression : 要访问前一个行的列或表达式。

     lead()
     expression : 要访问后一个行的列或表达式。
      SELECT id, name, score,
             LAG(score, 1, 0) OVER (PARTITION BY group_name ORDER BY id) AS prev_score,
             LEAD(score, 1, 0) OVER (PARTITION BY group_name ORDER BY id) AS next_score
      FROM student_scores;
        在这个示例中, LAG 函数用于获取前一个学生的分数, LEAD 函数用于获取后一个学生的分数。通过指定偏移量和默认值,可以处理边界情况。这两个函数在需要访问前后行数据进行比较或计算的情况下非常有用。
 
     first_value()
    4.窗口表达式.
     n preceding  往前n行.
     n following  忘后n行.
     current row  当前行.
     unbounded precding  从前面的起点开始.
     unbounded following 到后面的终点结束.
    
    
           
   

 

posted @ 2024-08-29 21:18  萌哥-爱学习  阅读(25)  评论(0编辑  收藏  举报