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

PostgreSQL:如何用TOP N产品总销售额筛选并按地区分组统计

解决方案

当然可以,以下两种方法都能实现需求,且只需修改一处数字就能调整TOP产品数量:

方法1:子查询嵌套

直接把获取TOP产品的查询作为IN的条件,无需手动复制产品名称:

SELECT
    Product,
    Region,
    sum(sales) totSalesByRegion
FROM 
    drug_data.sales_data
WHERE 
    Product IN (
        SELECT Product
        FROM drug_data.sales_data
        GROUP BY Product
        ORDER BY sum(sales) DESC
        LIMIT 5 -- 改这里的数字就能调整TOP数量
    )
GROUP BY
    Product,
    Region
ORDER BY
    totSalesByRegion DESC;

方法2:CTE(公共表表达式)

如果你的数据库支持CTE(比如PostgreSQL、MySQL 8.0+、SQL Server),这种写法可读性更强:

WITH top_products AS (
    SELECT Product
    FROM drug_data.sales_data
    GROUP BY Product
    ORDER BY sum(sales) DESC
    LIMIT 5 -- 调整此处数字即可改变TOP产品数量
)
SELECT
    s.Product,
    s.Region,
    sum(s.sales) totSalesByRegion
FROM 
    drug_data.sales_data s
JOIN top_products tp ON s.Product = tp.Product
GROUP BY
    s.Product,
    s.Region
ORDER BY
    totSalesByRegion DESC;

两种方法都能自动筛选出指定数量的TOP产品,并统计它们的各地区销售额,完全省去手动维护产品列表的步骤。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:15:42