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

Postgres如何在按年分组的聚合查询中新增基于总销售额的AVG(sales)列

解决方案

你原查询存在语法错误,多余的WHERE关键字需要先删除,之后可以通过Postgres的窗口函数实现全局统一的平均销售额列:AVG(sales) OVER ()为全局窗口函数,不会受GROUP BY year的分组限制,会基于全表sales字段计算统一的平均值,所有行的该列取值完全一致。

调整后的查询语句如下:

SELECT  
    sum(sales) AS "Sales",
    sum(discount) AS "discount",
    year,
    AVG(sales) OVER () AS "avg_sales_total"
FROM Sales_tbl 
GROUP BY year

如果你需要的是所有年份年度总销售额的平均值(而非单条原始记录销售额的平均值),可以嵌套子查询实现:

SELECT 
    "Sales",
    "discount",
    year,
    AVG("Sales") OVER () AS "avg_yearly_sales"
FROM (
    SELECT  
        sum(sales) AS "Sales",
        sum(discount) AS "discount",
        year
    FROM Sales_tbl 
    GROUP BY year
) t

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:36:03