T-SQL:开窗函数(十二)
1.基本概念
开窗函数分为两个部分分别是
1.聚合,排名,偏移,分布函数 。
2.开窗分区,排序,框架。
下面举个例子
SELECT empid, ordermonth, val,
SUM(val) OVER(PARTITION BY empid
ORDER BY ordermonth
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW) AS runval
FROM Sales.EmpOrders;
sum(val) 就是集合函数
over() 就是开窗 PARTITION BY empid 就是开窗分区(分组) ORDER BY ordermonth 开窗排序
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 开窗架构
2.排名开窗函数
SQL SERVER 支持4个排名函数 ROW_NUMBER,RANK,DENSE_RANK ,NTLE 来看看它们分别的作用
SELECT orderid, custid, val, ROW_NUMBER() OVER(ORDER BY val) AS rownum, RANK() OVER(ORDER BY val) AS rank, DENSE_RANK() OVER(ORDER BY val) AS dense_rank, NTILE() OVER(ORDER BY val) AS ntile FROM Sales.OrderValues ORDER BY val;

可以看到 它们不同排序规则
ROW_NUMBER() 对排序字段行号进行排序
RANK() 对数值进行排序 对相同数值有行号占用
DENSE_RANK() 也是对数值排序 如果有相同数值 依旧会按照原先行号加
NTILE 分区排序 为每一行分配一个区号 如果分10区 会对所有数据进行分区 总数据/分区数 就是每多少数据为一区
ROW_NUMBER() 默认在 DISTINCT 筛选重复项之前计算
2.偏移开窗函数
sql server 中总共有4个偏移函数 LAG 和 LEAD, FIRST_VALUE 和 LAST_VALUE
LAG函数在当前行之前查找
LEAD函数在当前行之后查找
LAST_VALUE 返回查找结果的最后一行
FIRST_VALUE 返回查找结果的第一行
3.聚合开窗函数
SUM() OVER()
AVG() OVER()
COUNT() OVER()
MAX() OVER() 等等
T-SQL:开窗函数(十二)的更多相关文章
- SQL开窗函数
[SQL]四种排序开窗函数 一 .简单了解什么是开窗函数 什么是开窗函数,开窗函数有什么作用,特征是什么? 所谓开窗函数就是定义一个行为列,简单讲,就是在你查询的结果上,直接多出一列值(可以是聚合 ...
- (011)每日SQL学习:SQL开窗函数
开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的 ...
- SQL语句(十二)分组查询
(十二)分组查询 将数据表中的数据按某种条件分成组,按组显示统计信息 查询各班学生的最大年龄.最小年龄.平均年龄和人数 分组 SELECT <字段名表1> FROM <表名> ...
- 数据库sql 开窗函数
--本文采用Oracle数据库测试,前4个查询为一组,后2个查询为一组,每组前面的查询是为了推出最后的查询 --创建表,为了简化处理,字段类型都采用varcharcreate table tb_sc( ...
- 理解 SQL 开窗函数
一次面试被问到开窗函数,懵逼了,赶紧补补总结一下.... 开窗函数也是函数,所以 比如在原来的查询上添加一个总数列 create table ztest( id int identity, c1 in ...
- ORACLE SQL单行函数(二)【weber出品必属精品】
11.dual:虚表,任何用户都可以使用,表结构如下: SQL> desc dual Name Null? Type -------------------------------------- ...
- SQL系列(十二)—— insert update delete
前言 这个系列的前面都一直在介绍查询select.但是SQL中十分广泛,按对数据的不同处理可以分为: DML:全称Data Manipulation Language,从名字上可以看出,DML是对数据 ...
- Python函数(十二)-迭代器
字符串,列表,元组,字典,集合,生成器这些能通过for循环来遍历的数据类型都是可迭代对象 可通过isinstance判断是不是可迭代对象 >>> from collections i ...
- SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用
由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...
随机推荐
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十六之铭文升级版
铭文一级: linux crontab 网站:http://tool.lu/crontab 每一分钟执行一次的crontab表达式: */1 * * * * crontab -e */1 * * * ...
- Linux(以RHEL7为例)下添加工作区的方法|| The Way To Add Workspace On Linux
Linux(以RHEL7为例)下添加工作区的方法 The Way To Add Workspace On Linux 作者:钟凤山(子敬叔叔) 编写时间:2017年5月11日星期四 需求:有时候在使用 ...
- Jquery 图片走马灯效果原理
本篇只讲解水平走马灯效果,垂直向上走马灯效果不讲解,原理一样,但是水平走马灯效果有一个小坑.待会讲解 照例先上代码: HTML: <div class="box"> & ...
- utf-8 decode
摘自 Lua 5.3 源文件 lutf8lib.c /* ** Decode one UTF-8 sequence, returning NULL if byte sequence is invali ...
- Maven(个人整理)(一,未完待续)
Maven 1. 什么是Maven? 乍一看,Maven看起来很多东西,但简而言之,Maven试图将 ...
- jdk的安装和配置环境变量
一.下载 JDK是个免费的东东,所以大家不要去百度啥破解版了,直接去官网下载最新版本吧,比较安全,官网地址:http://www.oracle.com/technetwork/java/index.h ...
- MySQL slow_log日志表出现非法字段值
背景 从mysql.slow_log 获取慢查询日志很慢,该表是csv表,没有索引. 想添加索引来加速访问,而csv引擎不能添加索引(csv引擎存储是以逗号分割的文本来存储的),只能改存储引擎来添加索 ...
- 惊艳,Dubbo域名已改,也不再局限于Java!
今天作者想去 Dubbo 官网查下相关资料,发现官方域名由 dubbo.io 直接跳转至 dubbo.apache.org 下了,然后突然回想起 Dubbo 已经在 2 月份正式进入了 Apache ...
- Redis使用sortedset缓存IP段数据
我们原来的业务中,有很多地方需要解析用户IP的信息,刚开始是通过新浪.百度这些第三方的接口来解析IP信息,后来发现调用这些接口频繁时会被禁用一小段时间.不得已只得将数据存到我们的数据库中,表结构大致如 ...
- Linux编程 1 (文件系统路径说明, 目录结构说明)
一. Linux文件系统路径说明 熟悉windows系统的,都知道文件路径表示,如C:\User\rich\Documnets\test.doc. 在linux中目录称为虚拟目录(virtual di ...