开窗函数over(),rank()的用法及例子
介绍
窗口函数OVER()指定一组行,开窗函数计算从窗口函数输出的结果集中各行的值。
开窗函数不需要使用GROUP BY就可以对数据进行分组,还可以同时返回基础行的列和聚合列。
开窗函数over的常用方法
over() 的语法为:over([patition by ] <order by >)。
需要注意的是,over() 前面是一个函数,如果是聚合函数,那么order by 不能一起使用。
over() 的另一常用情景是与 row_number() 一起用于分页。
先创建一个表(目前条件有限,日后再补,用表格先凑合一下。。。)
1.为每条数据显示聚合信息.(聚合函数() over()
select *, max(num) over () as '杀敌最大数' from table_name
结果:
select *, sum(num) over () as '杀敌总数' from table_name
2.位每条数据提供分组的聚合函数结果(聚合函数() over(partition by 字段) as 别名)
select *, sum(num) over(partition by name ) as'个人杀敌总数' from table_name
将数据先进行分组再计算
select *, max(num) over(partition by name ) as'个人杀敌总数' from table_name order by name
例如最小数、最大数计算同理
3.与排名函数一起使用(row number() over(order by 字段) as 别名)---固定搭配
select *, row_number() over(partition by name order by name) as '分组排序' from table_name
先按姓名排序:
按分组后排序
select *, row_number() over(order by name) as '分组排序' from table_name
rank()函数同理
rank()over(partition by user_id order by user_date)
上面不区分主键,只是按排序顺序进行数字递增,这个用的多
-----------------------------------------------------------------------------------
注意点1:row_number()函数是在distinct子句之前处理的
有需要的后续补充吧
开窗函数over(),rank()的用法及例子相关推荐
- 开窗函数的意义与用法
开窗函数--排序函数 开窗函数与其他函数的区别是,它不是关联其他表查询,而是在一张表内根据我们的想法自定义的规则分组后对我们组内的数据进行检索和计算.我们自定义的规则所分的组,就如同整张表的一个个小窗 ...
- sql语句中开窗函数的使用
开窗函数主要分为2类: 1.排序开窗函数: rank() over(partition by xxx order by yyy) //各分区按照yyy字段排序,如果yyy字段值一样,则rank值一样, ...
- SQL开窗函数(窗口函数)详解
一.什么是开窗函数 开窗函数/分析函数:over() 开窗函数也叫分析函数,有两类:一类是聚合开窗函数,一类是排序开窗函数. 开窗函数的调用格式为: 函数名(列名) OVER(partition by ...
- mysql 开窗函数 累加_开窗函数在MySql中的使用
MySql在8.0的版本增加了对开窗函数的支持,终于可以在MySql使用开窗函数了.开窗函数又称OLAP函数(Online Analytical Processing).开窗函数的语法结构: #Key ...
- Oracle开窗函数over()的用法
OVER的定义 OVER用于为行定义一个窗口,它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列. OVER的语法 OVER ( [ PARTI ...
- 三种开窗函数详细用法,图文详解
开窗函数的详细用法 一,开窗函数的语法 二,从聚合开窗函数sum(score) over(partition by name )讲起 三,开窗函数之first_value,last_value,lea ...
- 开窗函数sum,avg,min,max用法
sum开窗函数 数据准备 hive> select * from TestData; OK cookie1 2021-04-10 1 cookie1 2021-04-11 5 cookie1 2 ...
- 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)...
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指 ...
- 20220720 开窗函数2:rank()/dense_rank()
20220720 开窗函数2:rank()/dense_rank() RANK()为每一组的行生成一个序号,但是却与ROW_NUMBER()有点不同.ROW_NUMBER()按照ORDER BY的排序 ...
最新文章
- MySQL数据库root账户密码忘记两种处理方法转载
- go语言之行--基础部分
- python 操作pdf
- curl 支持ws吗_curl 支持 http2
- ASP 高亮显示不区分大小写的关键字
- CentOS下Hive2.0.0单机模式安装详解
- 50个最有用的Matplotlib数据分析与可视化图
- python将jwths256加密——pyjwt库
- Atitit 数据库视图与表的wrap与层级查询规范
- Java商店管理系统
- OS实验xv6 6.S081 开坑
- kali linux基本命令
- java爬虫-2018国家统计局区划和城乡划分代码以及数据库、json文件
- 局域网共享问题解决方案----日常经验总结
- (bug更正)利用KVC和associative特性在NSObject中存储键值
- Linux系统安装与实验基础
- 【获取内置命令ID】:VBA编程人员常用的工具。可以查询Excel内部命令的ID号
- 二度云抢先成为首批工信部(.vip/.xyz/.club)域名注册管理机构
- AndroidNDK工程FFmpeg(一)-- Android使用FFmpeg--Shell脚本编写与执行编译FFmpeg库
- MySQL/oracle服务器误删文件的恢复过程
热门文章
- 自由能计算,PMF,伞形抽样,WHAM
- HAVING 的用法
- 科技让化工更美丽,化工让生活更美好
- 抽象思维-程序员系列第一弹
- Android设置悬浮窗按钮,图片有多余的白色背景
- 【scrapy实践】_爬取安居客_广州_新楼盘数据
- iphone紧急联络使用教程(苹果的紧急联络有什么用)
- python抓包库_python学习笔记——pcap抓包
- Spring application.properties
- 关于C#.NET中PerformanceCounter无法从系统备份存储中重建性能计数器设置,错误代码为 5的问题解决