You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres聚合函数选型:按经纪商及品种汇总交易并计算累计总额

PostgreSQL 聚合函数实现交易数据多维度汇总

一、核心需求

  • 按经纪商+品种维度生成汇总报表:统计交易总数量(Qty之和)、总金额(TotalValue=Value之和),可选展示平均价格(AvgPrice)
  • 按经纪商维度生成累计汇总报表:统计该经纪商下所有品种的总数量、累计总金额

二、样本明细数据

假设交易明细表名为trade_details,结构及测试数据如下:

CREATE TABLE trade_details (
    broker VARCHAR(50),
    product VARCHAR(50),
    qty INT,
    value NUMERIC(12,2)
);

INSERT INTO trade_details VALUES
('BrokerA', 'Gold', 10, 18000.00),
('BrokerA', 'Gold', 5, 9000.00),
('BrokerA', 'Silver', 20, 4000.00),
('BrokerB', 'Gold', 8, 14400.00),
('BrokerB', 'Silver', 15, 3000.00),
('BrokerB', 'Oil', 12, 7200.00);

三、按经纪商+品种汇总报表实现

使用SUM()聚合函数计算总数量和总金额,通过GROUP BY broker, product按双维度分组;平均价格通过总金额除以总数量计算(比直接用AVG()更贴合业务逻辑):

SELECT
    broker,
    product,
    SUM(qty) AS total_qty,
    SUM(value) AS total_value,
    ROUND(SUM(value)/SUM(qty), 2) AS avg_price
FROM trade_details
GROUP BY broker, product
ORDER BY broker, product;

预期输出

brokerproducttotal_qtytotal_valueavg_price
BrokerAGold1527000.001800.00
BrokerASilver204000.00200.00
BrokerBGold814400.001800.00
BrokerBOil127200.00600.00
BrokerBSilver153000.00200.00

四、按经纪商累计总额汇总报表实现

仅按broker分组,用SUM()汇总全品种的数量和金额:

SELECT
    broker,
    SUM(qty) AS total_qty_all_products,
    SUM(value) AS total_value_all_products
FROM trade_details
GROUP BY broker
ORDER BY broker;

预期输出

brokertotal_qty_all_productstotal_value_all_products
BrokerA3531000.00
BrokerB3524600.00

关键函数说明

  • SUM():核心聚合函数,用于数值型字段的求和计算,是实现数量、金额汇总的基础
  • 关于AvgPrice:业务上的平均价格应为总金额除以总数量,而非单条记录价格的平均值,因此用SUM(value)/SUM(qty)计算更准确

内容的提问来源于stack exchange,提问作者marcos sicat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:32:36