SQL开窗函数-跨层累计

楼主
我是社区第238588位番薯,欢迎点我头像关注我哦~

注意事项:由于设计器内置的是 Sqlite 数据库,在使用上很多语法都不支持,请将sqlite数据库文件迁移到主流数据库(MySQL、MSSQL、Oracle…)后运行。

迁移方法使用第三方软件迁移内置FRDemo数据库到指定数据库

本文运行环境:Microsoft SQL Server 2012 - 11.0.2100.60 (X64)

                       Copyright (c) Microsoft Corporation

                       Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


1. 描述

【逐层累计】是每一组中将每层与上一层数据相加,得到这一层的累计结果。【跨层累计】不是每组分别累计,而是从第二组开始在上一组的累计结果上继续累计。除了通过单元格设置实现此功能外,我们接下来介绍一种直接在数据集中实现的新方法,如下图:



2. 思路

在创建数据集时用sql的开窗排名函数【ROW_NUMBER() OVER (ORDER BY)】处理,然后进行字段的直接调用。

SELECT t.*,sum(t.销量) over(order by t.年份,t.月份) as 年度累计 FROM 大陆车辆销售 t;



3. 实例3.1 实测数据

打开设计器自带的 FRDemo 库中的【大陆汽车销售】表:


3.2 跨层累计脚本

SELECT t.*, SUM (t.销量) OVER (ORDER BY t.年份, t.月份) AS 年度累计 FROM 大陆车辆销售 t;


3.3 效果预览

执行上述 SQL 脚本,效果如下:

注: 请注意区分【逐层累计】与【跨层累计】


分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0回帖数 1关注人数 4727浏览人数
最后回复于:2020-9-11 17:10

返回顶部 返回列表