窗口函数 ROW_NUMBER

ROW_NUMBER:在窗口函数的分区、排序列 会为每一数据行分配唯一的序列值

最近在工作中经常会碰到,计算当前订单时该会员的第多少单以及会员的累积消费金额等情况

1:计算会员当前订单是该会员第几单(根据订单创建时间计算)

1 SELECT  OrderCode ,
2         CustCode ,
3         OrderMoney ,
4         CreateTime ,
5         ROW_NUMBER() OVER ( ORDER BY CreateTime ) AS OrderSeq
6 FROM    dbo.Sales_Order
7 WHERE   CustCode = ‘6702791‘;

2:除了计算每笔订单时该会员的第几单,同时还会关注,截止当前订单,会员累计消费金额

1 SELECT  OrderCode ,
2         CustCode ,
3         OrderMoney ,
4         CreateTime ,
5         ROW_NUMBER() OVER ( ORDER BY CreateTime ) AS OrderSeq ,
6         SUM(OrderMoney) OVER ( ORDER BY CreateTime RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS CurTotalMoney
7 FROM    dbo.Sales_Order
8 WHERE   CustCode = ‘6702791‘;

窗口函数也会涉及到一些性能的相关问题,有关窗口函数的索引优化,后续会补充进来。

时间: 2024-10-14 23:20:06

窗口函数 ROW_NUMBER的相关文章

Spark窗口函数应用(-)

/** * @author DT大数据梦工厂 * 新浪微博 http://weibo.com/ilovepains/ * 微信公众账号:DT_Spark * 直播地址 YY频道:68917580 */object SparkSQLWindowFunctionOps { def main(args: Array[String]) { /** * 创建SparkConf对象,设置Spark程序运行时的配置信息 * 例如说通过setMaster来设置程序要链接的Spark集群的Master的URL,如

Oracle窗口函数显示想要的行数

Oracle中支持窗口函数ROW_NUMBER(),其用法和 MSSQLServer2005中相同,比如我们 执行下面的 SQL语句: SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY FSalary DESC) row_num, FNumber,FName,FSalary,FAge FROM T_Employee ) a WHERE a.row_num>=3 AND a.row_num<=5 ADD_MONTHS(FBirthDay,2),

SQL金典笔记

ps:补充自己的基础知识,大神请无视.. ~~~~~~~~~~~~~~~~~~~~~ DataBase Management System,DBMS.... Catalog ...库 Table....表 Column...列--Field 字段,每个列描述数据的一个特性. DataType ...数据类型 Record....记录---Row行, PrimaryKey...主键-----多个字段才唯一标识一列时,称为复合主键 Index ...索引-不建立索引是全表扫描,速度慢:建立索引只扫描

Greenplum优化--SQL调优篇

目录 数据库查询预准备 VACUUM ANALYZE EXPLAIN执行计划 两种聚合方式 关联 重分布 查询优化 explain参数 选择合适分布键 分区表 压缩表 分组扩展 窗口函数 列存储和行存储 函数和存储过程 索引使用 NOTIN 聚合函数太多 资源队列 其它优化技巧 参考 数据库查询预准备 VACUUM vacuum只是简单的回收空间且令其可以再次使用,没有请求排它锁,仍旧可以对表读写 vacuum full执行更广泛的处理,包括跨块移动行,以便把表压缩至使用最少的磁盘块数目存储.相

SQL Server 2008常用的数据库知识整理

数据库知识点: 一.计算字段 1.NULLIF函数 将 null 的姓名转化为“佚名”: 表达式:NULLIF ( expression1 , expression2 )    含义:如果两个表达式不等价, 则 NULLIF 返回第一个 expression1的值.         如果两个表达式等价, 则 NULLIF 返回第一个 expression1类型的空值. 2.Beween And 计算字段 如:Fsalary Between Fage*1.5+2000 And Fage*1.8+5

基于Hadoop生态圈的数据仓库实践 —— ETL

使用Hive转换.装载数据 1. Hive简介 (1)Hive是什么         Hive是一个数据仓库软件,使用SQL读.写.管理分布式存储上的大数据集.它建立在Hadoop之上,具有以下功能和特点: 通过SQL方便地访问数据,适合执行ETL.报表.数据分析等数据仓库任务. 提供一种机制,给各种各样的数据格式加上结构. 直接访问HDFS的文件,或者访问如HBase的其它数据存储. 可以通过MapReduce.Spark或Tez等多种计算框架执行查询.         Hive提供标准的SQ

ETL调优的一些分享(上)(转载)

ETL是构建数据仓库的重要一环.通过该过程用户将所需数据提取出来,并按照已定义的模型导入数据仓库.由于ETL是建立数据仓库的必经过程,它的效率将影响整个数据仓库的构建,因此它的有效调优具有很高的重要性.在实际应用中我们通常建议把ETL业务的调优分为若干思路,从而保证调优充分有序进行,避免遗漏,最大化提升ETL的执行效率. 我们将分上下两篇文章介绍ETL业务的调优手段.本文将首先介绍以下三个:检查资源是否有效配置:收集数据特征,确定分区分桶:以及Task运行情况收集和监控.并对每个步骤中的调优原则

Pyspark 最近使用的一些有趣姿势的梳理

之前对 SQL 还是不是非常熟悉的,但是现在或多或少还是会写一些计算任务.比如最近在推送将所有天级的耗时任务都从传统关系型数据库迁移至 Spark 集群当中进行计算,中间遇到一些有趣的小问题在这里记录一下. Q: 我想按照某个字段分组并且把一组查询字段连起来得到一个 json 然后把结果作为一个字段应该怎么弄? A: 这里我的思路是将我们需要 dumps 的字段给拼接起来,然后使用列表将同一个分组里面的是数据组合起来.然后过一个 udf 把列表中的记录处理成数组最后 json.dumps 一下即

Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK

问题导读: 1.NTILE作用是什么? 2.按照pv降序排列,生成分组内每天的pv名次可使用哪个窗口函数? 3.RANK 和 DENSE_RANK作用是什么? 接上篇:Hive分析窗口函数(一)SUM,AVG,MIN,MAX 本文中介绍前几个序列函数,NTILE,ROW_NUMBER,RANK,DENSE_RANK,下面会一一解释各自的用途. Hive版本为 apache-hive-0.13.1 注意: 序列函数不支持WINDOW子句.(什么是WINDOW子句,Hive分析窗口函数(一)SUM,