SQL Server笔记 -- 第46章 窗口函数

第46.1节 中心移动平均

计算价格6个月(126个工作日)中心移动平均:

sql 复制代码
SELECT
    TradeDate,
    AVG(Px) OVER (
        ORDER BY TradeDate
        ROWS BETWEEN 63 PRECEDING AND 63 FOLLOWING
    ) AS PxMovingAverage
FROM HistoricalPrices;
  • 由于每行需取前后最多63行,在开始与结束处无法完全居中。

第46.2节 查找时间戳列表中最新的一条记录

在记录事件的表中,常需找出最新一条事件。因时间戳可能重复,使用 row_number() over (order by ...) 保证唯一排序,再取 rn = 1:

sql 复制代码
SELECT *
FROM (
    SELECT *,
           row_number() OVER (ORDER BY crdate DESC) AS my_ranking
    FROM sys.sysobjects
) g
WHERE my_ranking = 1;
  • 同样方法可用于任何可能出现重复排序列的数据集。

第46.3节 最近30条记录的移动平均

计算最近30条销售记录的移动平均:

sql 复制代码
SELECT
    value_column1,
    (
        SELECT AVG(value_column1) AS moving_average
        FROM Table1 T2
        WHERE (
            SELECT COUNT(*)
            FROM Table1 T3
            WHERE date_column1 BETWEEN T2.date_column1 AND T1.date_column1
        ) BETWEEN 1 AND 30
    ) AS MovingAvg
FROM Table1 T1;
  • 子查询按日期顺序统计行号,仅保留最近30行计算平均。
相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
可涵不会debug3 天前
LangChain 进阶之路:LangGraph 图工作流、有状态智能体完整入门教程
microsoft
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
深圳老胡3 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
Because_of_Her13 天前
并查集-听课笔记
笔记·算法·并查集
漂着的圆木3 天前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试