首页 > 其他分享 >窗口函数

窗口函数

时间:2024-02-17 10:11:05浏览次数:26  
标签:窗口 函数 unbounded 分组 between 排序 order

窗口函数

语法:

<窗口函数> over(partition by 分组字段 order by 排序字段 rows between 开始 and 结束)
  1. partition by 字段

    对指定字段进行分组,后续以组为单位,把每个分组单独作为一个窗口进行统计分析操作。

  2. order by 字段

    • order by与partition by连用的时候,可以对各个分组内的数据按照指定的字段进行排序,如果没有partition by指定分组字段就对全局数据排序

    • 当为聚合函数时,不仅对窗口内数据排序,还起到窗口内从当前行到之前所有行的聚合作用

    • 当order by排序的维度不存在重复时,使用order by + sum(),可以产生整体累计计数的效果。但当order by排序的维度存在重复时,会在不重复的数据中产生累计效果,而重复的数据中,也会把整体的累计结果分发到每条重复的数据中

      user_id count sum_all
      A 4 4
      A 5 9
      B 1 1
      D 2 4
      D 2 4
  3. rows between 开始位置 and 结束位置

    n preceding :从当前行往前n行

    n following : 从当前行往后n行

    current row:当前行

    unbounded:起点(一般结合preceding,following使用)

    unbounded preceding:表示该窗口最前面的行(起点)

    unbounded following:表示该窗口最后面的行(终点)

    # 表示从起点到当前行的数据
    rows between unbounded preceding and current row
    
    # 表示从当前行到终点的数据
    rows between current row and unbounded following
    
    # 表示从起点到终点的数据
    rows between unbounded preceding and unbounded following
    

窗口函数分类:

  1. 聚合函数:avg、sum、count、max、min等

  2. 排序窗口函数:

    row_number:排序并产生自增编号,编号不重复且连续 1,2,3,4

    rank:排序并产生自增编号,编号会重复且不连续 1,2,2,4

    dense_rank:排序并产生自增编号,编号会重复且连续 1,2,2,3

  3. 偏移窗口函数:lag、lead

    获取分组中往前n行的值

    基础语法:lead(field, n, default_value) over()

    获取分组中往后n行的值

    基础语法:lag(field, n, default_value) over()

标签:窗口,函数,unbounded,分组,between,排序,order
From: https://www.cnblogs.com/coke0914/p/18017744

相关文章

  • 阿克曼函数(Ackermann function)部分推导
    相关题目已知\(Ackermannfunction\)为Ack(m,n)={n+1__m=0;Ack(m-1,1)__m>0&&n=0;Ack(m-1,Ack(m,n-1)__m>0&&n>0.}当\(m=1\)时有\(Ack(1,n)\)\(=Ack(0,Ack(1,n-1))=Ack(1,n-1)+1;\)\(=Ack(0,Ack(1,n-2))+1=Ack(1,n-2)+2;\)\(=···\)......
  • 普通生成函数学习笔记
    普通生成函数是让一个序列(可以是有限序列,可以是无限序列)的第\(i\)项\(a_i(i\ge0)\)作为\(x^i\)的系数。序列\([2,3,4,5]\)用生成函数表达就是\(2+3x+4x^2+5x^3\)。序列\([1,3,5,7,\ldots]\)用生成函数表达就是\(\sum\limits_{i=0}^\infty(2i+1)x^i\)。由于这样的......
  • 滑动窗口 leetcode 76
    Problem:76.最小覆盖子串目录思路解题方法复杂度Code思路第一次遇到不看题解我是写不出来,主要是ans是不断变化的解题方法用两个指针,left缩小区间,right扩大区间,直到产生冗余元素开始,缩减left,直到不能再缩减为止,取满足的最小字串就好了复杂度时间复杂度:\(O(n)\)空......
  • 【模板】多项式全家桶(多项式初等函数(部分))
    【模板】多项式初等函数同时作为https://github.com/caijianhong/template-poly的document。杂项数域为\(\mathbbF_{998244353}\),所以定义了mint为modint<998244353>。poly是多项式的类型,从std::vector<mint>继承而来。poly的构造函数如下:poly();explicitpoly(......
  • 生成函数从入门到进门
    引入先看下面这个例子:\[(1+a_1x)\times(1+a_2x)\times\cdots\times(1+a_nx)\]拆括号得:\[1+(a_1+a_2+\cdots+a_n)x+(a_1a_2+a_1a_3+\cdots+a_{n-1}a_n)x^2+\cdots+(a_1a_2\cdotsa_n)x^n\]其中\(x^2\)的系数包含了从\(n\)个元素\(\{a_1,a_2,\cdots,a_n\}\)中选取两个的......
  • 通过解析库探究函数式抽象代价 ( ini 解析示例补充)
    上一篇用HexColor作为示例,可能过于简单这里再补充一个ini解析的示例由于实在写不动用其他库解析ini了,春节都要过完了,累了,写不动了,所以随意找了一份解析ini的库,仅供参考,对比不准确,毕竟完整库包含了更多功能先看看结果BenchmarkDotNetv0.13.12,Windows11(10.0.2......
  • 在JavaScript中的防抖函数 - 通过在React中构建自动完成功能来解释
    当你将一个新应用推向生产环境时,你希望确保它用户友好。网站的性能是用户体验的关键部分。每个用户都希望网站及其内容能够快速加载。每一秒都是宝贵的,可能导致用户再也不会访问你的网站。在本指南中,我们将了解JavaScript中一个非常重要的技术,即防抖函数。然后,我将向您展示如何在......
  • Go语言的100个错误使用场景(40-47)|字符串&函数&方法
    目录前言5.字符串5.5无用的字符串转换(#40)5.6获取子字符串操作和内存泄漏(#41)6.函数和方法6.1不知道选择哪种类型的方法接受者(#42)6.2从来不使用命名的返回值(#43)6.3使用命名返回值造成的意外副作用(#44)6.4返回一个nil接受者(#45)6.5使用文件名作为函数的输入(#46)6.6不理解de......
  • Python 中 print 函数的用法
    在Python中,可以使用print函数来打印一个变量或者一个字符串:print("MynameisAlice")print(i)如果需要字符串格式化来打印一句话中包含变量的内容,有几种常用的方法:使用格式化字符串(f-string):在字符串前面加上字母"f",然后在字符串中使用大括号{}包裹变量名。示例代码如下:......
  • exec 函数详解及应用
    exec函数详解及应用一、介绍​ 当谈论exec函数时,我们通常指的是exec函数族,这是在Unix/Linux操作系统上用于执行新进程的一组系统调用。exec函数族的成员包括execl、execv、execle、execve、execvp等。这些函数的主要目的是在当前进程的上下文中执行一个新程序,从而替换......