weighted_statistics

针对稀疏数据的高性能加权统计量计算

概览

扩展包名版本分类许可证语言
pg_weighted_statistics1.0.0FUNCPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
4680weighted_statistics-

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.0.01817161514pg_weighted_statistics-
RPMPIGSTY1.0.01817161514pg_weighted_statistics_$v-
DEBPIGSTY1.0.01817161514postgresql-$v-weighted-statistics-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
el8.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
el9.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
el9.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
el10.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
el10.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
d12.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
d12.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
d13.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
d13.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u22.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u22.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u24.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u24.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0

构建

您可以使用 pig build 命令构建 pg_weighted_statistics 扩展的 RPM / DEB 包:

pig build pkg pg_weighted_statistics         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_weighted_statistics 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_weighted_statistics;          # 当前活跃 PG 版本安装
pig ext install -y pg_weighted_statistics -v 18  # PG 18
pig ext install -y pg_weighted_statistics -v 17  # PG 17
pig ext install -y pg_weighted_statistics -v 16  # PG 16
pig ext install -y pg_weighted_statistics -v 15  # PG 15
pig ext install -y pg_weighted_statistics -v 14  # PG 14
dnf install -y pg_weighted_statistics_18       # PG 18
dnf install -y pg_weighted_statistics_17       # PG 17
dnf install -y pg_weighted_statistics_16       # PG 16
dnf install -y pg_weighted_statistics_15       # PG 15
dnf install -y pg_weighted_statistics_14       # PG 14
apt install -y postgresql-18-weighted-statistics   # PG 18
apt install -y postgresql-17-weighted-statistics   # PG 17
apt install -y postgresql-16-weighted-statistics   # PG 16
apt install -y postgresql-15-weighted-statistics   # PG 15
apt install -y postgresql-14-weighted-statistics   # PG 14

创建扩展

CREATE EXTENSION weighted_statistics;

用法

weighted_statistics: PostgreSQL 的加权统计函数

高性能 C 扩展,提供加权统计函数,具有自动稀疏数据处理能力(当 sum(weights) < 1.0 时)。

CREATE EXTENSION weighted_statistics;

函数

函数描述
weighted_mean(values[], weights[])加权平均值
weighted_variance(values[], weights[], ddof)加权方差(ddof:0=总体,1=样本)
weighted_std(values[], weights[], ddof)加权标准差
weighted_quantile(values[], weights[], quantiles[])经验 CDF 分位数
wquantile(values[], weights[], quantiles[])第 7 类(Hyndman-Fan)分位数
whdquantile(values[], weights[], quantiles[])Harrell-Davis 分位数
weighted_median(values[], weights[])第 50 百分位数快捷方式(经验 CDF)

示例

-- 加权平均值
SELECT weighted_mean(ARRAY[1.0, 2.0, 3.0], ARRAY[0.2, 0.3, 0.5]);
-- 2.3

-- 加权分位数
SELECT weighted_quantile(ARRAY[10.0, 20.0, 30.0], ARRAY[0.3, 0.4, 0.3], ARRAY[0.25, 0.5, 0.75]);
-- {15.0, 20.0, 25.0}

-- 稀疏数据(当 sum(weights) < 1.0 时自动添加隐式零值)
SELECT weighted_mean(ARRAY[10, 20], ARRAY[0.2, 0.3]);
-- 8.0(等价于 weighted_mean(ARRAY[10, 20, 0, 0], ARRAY[0.2, 0.3, 0.25, 0.25]))

-- 多种统计量
SELECT weighted_mean(vals, weights),
       weighted_std(vals, weights, 1),
       weighted_quantile(vals, weights, ARRAY[0.05, 0.95])
FROM (SELECT array_agg(val) AS vals, array_agg(weight) AS weights FROM data) t;

最后修改 2026-03-14: update extension metadata (953cbd0)