⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

自定义聚合函数:实现滑动窗口的加权中位数

编写一个支持窗口子句的聚合函数,用于金融时间序列数据的滑动加权中位数计算,超越内置median实现。 · 难度:入门 · +10XP

聚合函数:从零构建分析利器

本教程创建weighted_median聚合,支持ORDER BYROWS BETWEEN窗口。利用CREATE AGGREGATESFUNCFINALFUNC,内部使用plpython3u或纯SQL实现加权二分查找。重点处理内存优化:使用INTERNAL状态数据类型存储预排序的数组。最后在ORDER BY窗口中使用EXCLUDE CURRENT ROW实现排除自身的效果。

CREATE AGGREGATE weighted_median(value numeric, weight numeric) (
    SFUNC = weighted_median_accum,
    STYPE = numeric[],
    FINALFUNC = weighted_median_final,
    INITCOND = '{}'
);

-- 使用示例 SELECT date, weighted_median(price, volume) OVER (ORDER BY date ROWS BETWEEN 5 PRECEDING AND CURRENT ROW) FROM trades;

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 131 篇
0 完成
🔥 0