关于SQL的over partition by 开窗语句在分页和统计中的使用总
CREATE TABLE OrderInfo(
ID INT IDENTITY(1,1) PRIMARY KEY,
CustomerID INT NULL,
TotalMoney DECIMAL(18,2) NULL,
OrderStatus TINYINT NULL DEFAULT 0,
CreateTime DATETIME DEFAULT GETDATE() NOT NULL
)
INSERT INTO OrderInfo
(
CustomerID,
TotalMoney,
OrderStatus,
CreateTime
)
SELECT 1,100,1,'2015-03-21' UNION ALL
SELECT 2,50,1,'2015-03-22' UNION ALL
SELECT 1,300,1,'2015-03-23' UNION ALL
SELECT 3,1000,3,'2015-03-24' UNION ALL
SELECT 2,20,1,'2015-03-24' UNION ALL
SELECT 5,50,4,'2015-03-20' UNION ALL
SELECT 8,600,2,'2015-03-21' UNION ALL
SELECT 6,80,1,'2015-03-22' UNION ALL
SELECT 2,70,1,'2015-03-23' UNION ALL
SELECT 1,40,0,'2015-03-23' UNION ALL
SELECT 9,20,1,'2015-03-20' UNION ALL
SELECT 10,100,1,'2015-03-21' UNION ALL
SELECT 6,99,1,'2015-03-24' UNION ALL
SELECT 4,78,2,'2015-03-25' UNION ALL
SELECT 2,100,1,'2015-03-24'
/*
找出每个顾客第一次下单的时间及金额
*/
with cte as(
select *,ROW_NUMBER() over(partition by customerid order by createtime) rm from OrderInfo
)
select * from cte where rm=1 --select CustomerID,min(CreateTime) from OrderInfo group by CustomerID
/*
找出每个顾客金额最大的订单金额
*/
with cte as(
select *,ROW_NUMBER() over(partition by customerid order by totalmoney desc) rm from OrderInfo
)
select * from cte where rm=1 ---select CustomerID,max(TotalMoney) from OrderInfo group by CustomerID
/*
统计每一个客户最近下的订单是第几次下的订单
*/
with cte as
(
select *,ROW_NUMBER() over(partition by customerid order by createtime) rm from OrderInfo
)select CustomerID,max(rm) from cte
group by CustomerID ---select CustomerID,count(CustomerID) from OrderInfo group by CustomerID
/*
统计所有客户第3次下单订单信息
*/
;with cte as(
select *,ROW_NUMBER() over(partition by customerid order by createtime) rm from OrderInfo
)
select * from cte where rm=3
/*
统计每一个客户所有订单金额的平均值
*/
select *,avg(TotalMoney) over(partition by customerid) rm from OrderInfo
/*
在使用over等开窗函数时,over里头的分组及排序的执行晚于“where,group by,order by”的执行。
*/
SELECT CustomerID,CreateTime,ROW_NUMBER() OVER (PARTITION BY customerID ORDER BY CreateTime) AS num
FROM OrderInfo
WHERE CustomerID>2
关于SQL的over partition by 开窗语句在分页和统计中的使用总的更多相关文章
- SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用
由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...
- sql已经在视图展示的语句如何显示别的表中的内容而不改变原有的值
1.这个功能是我在公司的时候的一个需求,我师傅和我说你不可能就是说你可以添加的时候是数字但是展现给客户看的时候是数字最好是名称因为客户不知道这是什么意思 2.于是我陷入了漫长的实现这个功能中一开始只是 ...
- SQL服务器在执行这条语句时会先进行运算然后执行
1.打开地址,我们可以看到是一个正常的页面. 2..然后在地址后面加上-1,变成:http://site/news.asp?id=123-1,若返回的页面和前面不同,是另一个正常的页面,则表示存在注入 ...
- PL/SQL中批量执行SQL脚本(不可把所有的语句都复制到New SQL Windows)
PL/SQL中批量执行SQL脚本,不可把所有的语句都复制到New SQL Window,因为这样会导致缓冲区过大而进程卡死! 最好的办法是将要执行的SQL脚本存放到指定文件中,如C:\insert.s ...
- 浅谈sql 、linq、lambda 查询语句的区别
浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...
- (转载)sql语句解决分页问题
<来源网址:http://www.delphifans.com/infoview/Article_353.html>sql语句解决分页问题日期:2005年1月17日 作者:treemon2 ...
- SQL数据库增删改查基本语句
adoquery1.Fielddefs[1].Name; 字段名dbgrid1.columns[0].width:=10; dbgrid的字段宽度adoquery1.Fields[i].DataTyp ...
- 利用SQL语句实现分页
1.概述 在网页中如果显示的数据太多就会占据过多的页面,而且显示速度也会很慢.为了控制每次在页面上显示数据的数量,就可以利用分页来显示数据. 2.技术要点 在SQL Server中要实现SQL分页,需 ...
- SQL点滴1—SET QUOTED_IDENTIFIER OFF语句的作用
原文:SQL点滴1-SET QUOTED_IDENTIFIER OFF语句的作用 先看下面几个sql语句 代码 SELECT * FROM [USER] WHERE a= 'netasp' ...
随机推荐
- ImageMagick - 智能的灰度空间(GRAYColorspace)让人窒息
今天在处理一张 gray.jpg 图片时,发现生成的图片色彩空间是: GRAYColorspace 可我在代码中明明设置了: MagickWand * mw = NewMagickWand (); M ...
- semantic ui框架学习笔记二
评论组件 文档里的评论组件介绍的比较清晰.这里我就挑一个我喜欢的格式展示出来: <div class="ui comments"> <h3 class=" ...
- day02作业
1.判断下列逻辑语句的True,False. 1),1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 tru ...
- 第二十七节,IOU和非极大值抑制
你如何判断对象检测算法运作良好呢?在这一节中,你将了解到并交比函数,可以用来评价对象检测算法. 一 并交比(Intersection over union ) 在对象检测任务中,你希望能够同时定位对象 ...
- (最小生成树 并查集)P1111 修复公路 洛谷
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- MySQL准备
目录 数据库管理软件的由来 什么是数据? 什么是数据库管理系统/软件? 数据库管理的三个阶段 MySQL 概述SQL语句 安装MySQL(在命令行的操作全要用管理员权限) 将MySQL服务制作为win ...
- 新建体(2):create or replace object创建存储包、存储过程、函数
http://heisetoufa.iteye.com/blog/366957/ 创建一个package(包) 声明: create or replace package mpay_route is ...
- matlab : Nelder mead simplex 单纯形直接搜索算法;
function [ param ] = NeldSearch( param ) %NERDSEARCH 此处显示有关此函数的摘要 % nelder mead simplex 单纯形直接搜索算法: % ...
- bzoj4034 线段树+dfs序
https://www.lydsy.com/JudgeOnline/problem.php?id=4034 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 ...
- 购物demo
这段时间从一个模板网站上拷了个购物系统的demo,试着写了一下,发现div+css布局还真是精妙无穷呢.设置好了布局,加上动态效果也只是锦上添花而已.所以,接下来的重点就是布局了! 我把网址粘上去:h ...