一次面试被问到开窗函数,懵逼了,赶紧补补总结一下。。。。

开窗函数也是函数,所以

比如在原来的查询上添加一个总数列

create table ztest(
id int identity,
c1 int ,
c2 varchar(10)
)
insert into ztest(c1,c2) values (1,'aa') ,(2,'aa'),(3,'bb'),(8,'cc'),(9,'cc')
SELECT * FROM ztest
--添加一个总数列
SELECT *,count(0) over() AS 总数 FROM ztest

子查询方式:

 SELECT * ,(SELECT count(0) FROM ztest )[总数] FROM ztest

非常的nice好用

Sum 示例

SELECT *,sum(c1) over( ) AS [ΣC1] FROM ztest 

我测试了自己创建的 function ,自己创建的不能开窗

可以开窗的函数有

Sum、Count、Max、Min 、First_Value、Last_Value

Row_Number

Cume_Rank

Percent_Rank

Rank

Dense_Rank

Lag--取上n行

Lead --取下n行取

窗口内分组排序

over(order by ) 排序

over(partition f) 按照 f 分组

SELECT *, min(c1) over(partition by c2 ORDER BY C1) AS [MinC1] FROM ztest 

Rank & Dense_rank & Row_Number 并列排名与普通排名示例

--rank 排名 并列第 1 、3 、5、7、9

SELECT *, rank() over(ORDER BY   c1 desc ) AS [rankC1] FROM ztest ORDER BY id 

-- dense_rank 并列第 12345 名

SELECT *, dense_rank() over(ORDER BY   c1 desc ) AS [rankC1] FROM ztest ORDER BY id 

-- Row_Number -- 唯一排名

SELECT *, Row_Number() over(ORDER BY   c1 desc ) AS [rankC1] FROM ztest ORDER BY id 

我总结一下思路,先查出扁平数据,然后再处理成聚合的数据,如图所示。

理解 SQL 开窗函数的更多相关文章

  1. SQL开窗函数

    [SQL]四种排序开窗函数   一 .简单了解什么是开窗函数 什么是开窗函数,开窗函数有什么作用,特征是什么? 所谓开窗函数就是定义一个行为列,简单讲,就是在你查询的结果上,直接多出一列值(可以是聚合 ...

  2. (011)每日SQL学习:SQL开窗函数

    开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的 ...

  3. 数据库sql 开窗函数

    --本文采用Oracle数据库测试,前4个查询为一组,后2个查询为一组,每组前面的查询是为了推出最后的查询 --创建表,为了简化处理,字段类型都采用varcharcreate table tb_sc( ...

  4. SQL SERVER开窗函数

    作为一名开发人员来讲,我感觉在职场白混了好多年,可能是自己真的没有进取的精神吧,看了<程序员的SQL金典>这本电子书,真的让我学到了不少知识,真心喜欢这本电子书,书中讲解的内容比较好懂,也 ...

  5. SQL使用开窗函数与CTE查询每月销售额的前几名

    WITH tagTab AS( SELECT YearMonth, pm=RANK() OVER(PARTITION BY YearMonth ORDER BY amount DESC) FROM S ...

  6. SQL ServerOVER 子句,over开窗函数,SQL SERVER 开窗函数

    https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx http://www.cnblogs.com/85538649 ...

  7. sql over开窗函数,

    sql over开窗函数, 1.使用over子句与rows_number()以及聚合函数进行使用,可以进行编号以及各种操作.而且利用over子句的分组效率比group by子句的效率更高. 2.在订单 ...

  8. sql server ,OVER(PARTITION BY)函数用法,开窗函数,over子句,over开窗函数

    https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx https://social.msdn.microsoft.c ...

  9. 【转】SQL SERVER 开窗函数简介

    在SQL SERVER 2005/2008支持两种排名开窗函数和聚集开窗函数. 以SQL SERVER中分面页为例,按时间顺序列出定单号. WITH OrderInfo AS ( SELECT ROW ...

随机推荐

  1. set和map容器、

    set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...

  2. 【TensorFlow】理解tf.nn.conv2d方法 ( 附代码详解注释 )

    最近在研究学习TensorFlow,在做识别手写数字的demo时,遇到了tf.nn.conv2d这个方法,查阅了官网的API 发现讲得比较简略,还是没理解.google了一下,参考了网上一些朋友写得博 ...

  3. H3C NAPT配置举例

  4. 央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家

    央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家 ——已接入NFCS的P2P网贷机构将优先 接入央行征信系统   P2P网贷行业的健康发展依赖于信用体系的支撑和保障,加快完善适应 ...

  5. [转]【Linux】Linux 目录结构

    初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp ...

  6. 阿里巴巴Java编程规范考试

    阿里巴巴Java编程规范考试 今天在阿里云官网把阿里巴巴Java编程规范认证考试考过了, 写下这篇文章总结一下考试中需要注意的知识点, 主体内容还是要直接看规范: 编程规约 异常日志 单元测试 安全规 ...

  7. H3C 路由表查找规则(3)

  8. H3C DHCP中继显示及维护

  9. 前端导出&配置问题

    <button class="search" onclick="method5('dataTable');">导出</button> 在 ...

  10. vue(axios)封装,content-type由application/json转换为application/x-www-form-urlencoded

    现在主流的http请求头的content-type有三种(不讨论xml): application/x-www-form-urlencoded  最常见的提交数据方式,与原生form表单数据一致,在c ...