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行计算平均。
相关推荐
随风飘的云16 小时前
MySQL的慢查询优化解决思路
数据库
IvorySQL20 小时前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
赵渝强老师21 小时前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
随逸1771 天前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
神秘的猪头1 天前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm
齐生12 天前
iOS 知识点 - 渲染机制、动画、卡顿小集合
笔记
IvorySQL2 天前
PostgreSQL 技术日报 (3月6日)|为什么 Ctrl-C 在 psql 里让人不安?
数据库·postgresql·开源
NineData2 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户962377954482 天前
VulnHub DC-1 靶机渗透测试笔记
笔记·测试