首页 > 数据库 >sql之窗口函数详解

sql之窗口函数详解

时间:2024-01-31 12:01:32浏览次数:28  
标签:窗口 name sql 详解 user address kbn order 函数

官方地址 https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html                                
                                
窗口函数:也可以被称为OLAP函数或分析函数。                                
                                
窗口函数大体可以分为以下两种:                                
    1. 能够作为窗口函数的聚合函数(sum,avg,count,max,min)                            
    2. rank、dense_rank、row_number等专用窗口函数。                            
                                
窗口函数和聚合函数的区别:            
聚合函数针对分组只返回一个结果 窗口函数针对分组中的每一行返回函数的结果
窗口函数语法四个部分: 1、function本身 用于对窗口中的数据进行操作; 2、partition by 用于将结果集分区; 3、order by 用于对分区中的数据进行排序; 4、window 用于定义function在其上操作的行的集合,即function所影响的范围。 1.RANK()、DENSE_RANK()、ROW_NUMBER() 、PERCENT_RANK() → 排序 ROW_NUMBER():将某字段按照顺序输出表的行号 select user_name,user_address_kbn, row_number() over(order by user_address_kbn) as num from t_user; user_name user_address_kbn num wang2 A 1 wang3 A 2 wang4 A 3 wang1 B 4 RANK():按照某字段的排序结果添加排名,但它是跳跃的、间断的排名。前三人并列第一,第四人就是第四名。 select user_name,user_address_kbn, rank() over(order by user_address_kbn) as num from t_user; user_name user_address_kbn num wang2 A 1 wang3 A 1 wang4 A 1 wang1 B 4 DENSE_RANK():连续的、不间断。前三人并列第一,第四人就是第二名。 select user_name,user_address_kbn, dense_rank() over(order by user_address_kbn) as num from t_user; user_name user_address_kbn num wang2 A 1 wang3 A 1 wang4 A 1 wang1 B 2 PERCENT_RANK():返回小于当前行中的值的分区值的百分比,不包括最高值。返回值范围从 0 到 1,表示行相对排名。百分比排名值。 select user_name, ROW_NUMBER() over w as 'ROW_NUMBER', PERCENT_RANK() over w as 'PERCENT_RANK' from t_user WINDOW w AS (order by user_name); user_name ROW_NUMBER PERCENT_RANK wang1 1 0 wang1 2 0 wang3 3 0.5 wang4 4 0.75 wang5 5 1 2.FIRST_VALUE()、LAST_VALUE()、NTH_VALUE() FIRST_VALUE() 窗口第一行的参数值 SELECT user_name, user_address, user_address_kbn, FIRST_VALUE(user_address) OVER (order by user_address_kbn) AS 'first' FROM t_user; user_name user_address user_address_kbn first wang2 北京 A 北京 wang4 广州 A 北京 wang5 西安 A 北京 wang1 西安 B 北京 wang3 上海 B 北京 LAST_VALUE() 窗口最后一行的参数值 SELECT user_name, user_address, user_address_kbn, LAST_VALUE(user_address) OVER (order by user_address_kbn) AS 'last' FROM t_user; user_name user_address user_address_kbn last wang2 北京 A 西安 wang4 广州 A 西安 wang5 西安 A 西安 wang1 西安 B 上海 wang3 上海 B 上海 NTH_VALUE() 窗口第 N 行的参数值 SELECT user_name, user_address, user_address_kbn, NTH_VALUE(user_address, 2) OVER (order by user_address_kbn) AS 'second' FROM t_user; user_name user_address user_address_kbn second wang2 北京 A 广州 wang4 广州 A 广州 wang5 西安 A 广州 wang1 西安 B 广州 wang3 上海 B 广州 3. LAG()、LEAD() 位移函数 LAG() 向前行偏移量,默认为1。 当找不到值时返回null  LEAD() 向后行偏移量,默认为1。 当找不到值时返回null  select user_name,user_address, LAG(user_address) over(order by user_name) as 'LAG', LEAD(user_address) over(order by user_name) as 'LEAD' from t_user; user_name user_address LAG LEAD wang1 西安 « NULL » 北京 wang2 北京 西安 上海 wang3 上海 北京 广州 wang4 广州 上海 西安 wang5 西安 广州 « NULL »

 

标签:窗口,name,sql,详解,user,address,kbn,order,函数
From: https://www.cnblogs.com/bors/p/17998984/window_function

相关文章

  • 运行bat的情况下,会弹出cmd的黑色窗口。怎么把这个窗口隐藏或者在后台运行
    为了在运行批处理文件(.bat)时隐藏或在后台运行CMD窗口,您可以使用Windows的VBScript来调用这个批处理文件。VBScript可以创建一个无窗口的WScript.Shell对象来运行您的批处理文件,从而避免显示命令提示符窗口。步骤创建VBScript文件:打开记事本或任何文本编辑器。将以下代......
  • 轻松学习SQL外键约束的核心原理和实用技巧
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。SQL约束-外键约束测试管理......
  • 轻松学习SQL外键约束的核心原理和实用技巧
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。SQL约束-外键约束......
  • CSS规则集详解
    整个结构称为规则集(规则集通常简称规则),注意各个部分的名称:选择器(Selector)HTML元素的名称位于规则集开始。它选择了一个或多个需要添加样式的元素(在这个例子中就是 <p> 元素)。要给不同元素添加样式,只需要更改选择器。声明(Declaration)一个单独的规则,如 color:red; 用来指......
  • mysql 创建数据库、创建用户
    --设置密码SHOWVARIABLESLIKE'validate_password%';setglobalvalidate_password_check_user_name='ON';setglobalvalidate_password_policy='LOW';setglobalvalidate_password_length=6; --创建数据库createdatabaseifnotex......
  • 数据库新手必知!轻松学习SQL外键约束的核心原理和实用技巧
    SQL约束-外键约束简介外键约束(FOREIGNKEY,缩写FK)是用来实现数据库表的参照完整性的。它是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须且有主键约束或者唯一约束。被依赖的表通常称之为父表或者主表,设置外键约束的表称为子表或从表。相关概念主键:可以唯一......
  • sql注入
    如何检测SQL注入漏洞您可以使用一组针对应用程序中每个入口点的系统测试来手动检测SQL注入。为此,您通常需要提交:单引号字符,并查找错误或其他异常。'一些特定于SQL的语法,这些语法的计算结果为入口点的基本(原始)值和不同的值,并在应用程序响应中查找系统差异。布尔条件,例如和,......
  • SQL vs NoSQL:系统设计中选择哪个数据库?
    SQLvsNoSQL:系统设计中选择哪个数据库?在设计系统时,您将面临的最关键的系统设计选择之一是选择合适的数据库管理系统(DBMS)。SQL与NoSQL数据库之间的选择可以极大地影响系统的整体性能、可扩展性和通常的成功。这就是为什么我们在系统设计中详细比较了SQL与NoSQL数据库,以帮助您......
  • 面试官:请说一下Mysql中count(1)、count(*)以及count(列)的区别?
    近期在Review项目代码时,发现同事们在查询MySQL行数时存在多样的方式,有的使用COUNT(1),有的用COUNT(id),还有人选择了COUNT(*)。这混杂的选择引发了我的思考。当然这三种count的方式也是众说纷纭,其中最大的分歧点就是COUNT(*)和COUNT(1)查询性能上,有人觉得COUNT(*)需要转换为COUN......
  • 详解云桌面3种主流架构
    本文简要介绍下云桌面(云电脑)的3种主流架构:VDI、IDV和VOI,概念、原理和区别,欢迎阅读。云桌面作为桌面办公和云计算融合发展的产物,在一定程度上替代了传统的办公形式。目前阿里云、华为云、移动云、电信云,还有华三、锐捷、中兴等互联网大厂都在积极布局该领域。 云桌面的技术原......