开窗函数-逐层均值

编辑
  • 文档创建者:zsh331
  • 浏览次数:2848次
  • 编辑次数:5次
  • 最近更新:Kevin-s 于 2019-06-18
  • 注意事项:由于设计器内置的是 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. 描述

    对于一些用户而言,有时候需要对原始数据分组求每层(包含)所处前N层的平均值来与当月数据做对比分析,称求【逐层平均值】。遇到类似需求时候,该如何处理呢?如图所示:



    2. 思路

    在创建数据集时用 SQL 的开窗排名函数[AVG(字段) over(PARTITION BY 分组字段 order by 逐层字段)]处理,然后进行直接调用。

    SELECT t.*,AVG(t.销量) over(PARTITION BY t.年份 order by t.月份) as '前N月平均销量' FROM 大陆车辆销售 t;


    3. 示例

    3.1 初始数据

    打开软件自带的 FRDemo 库中的【大陆汽车销售】表:


    3.2 逐层平均值 SQL 脚本

    SELECT t.*,AVG(t.销量) over(PARTITION BY t.年份 order by t.月份) as '前N月平均销量' FROM 大陆车辆销售 t;


    3.3 效果预览

    执行 SQL 脚本,效果如下:



    附件列表


    主题: 报表应用
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]