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

如何用SQL按地区返回销售额最高的门店(求sum的最大值)

如何获取各地区销售额最高的门店数据?

现有分布在不同地区的门店销售数据,需要输出每个地区中销售额最高的门店。

示例数据

LocationStoreprice
Ax1.99
Ax3.99
Ay2.99
Bd3.99
Be5.99
Be1.99

当前已完成的步骤

先执行以下SQL(注意补充GROUP BY子句,否则聚合函数无法正确计算):

SELECT Location, Store, SUM(price)
FROM table1
GROUP BY Location, Store;

得到各门店的销售额汇总结果:

LocationStoresum(price)
Ax5.98
Ay2.99
Bd3.99
Be7.98

目标需求

需要仅返回每个地区中销售额最高的门店,结果如下:

LocationStoretotal_sales
Ax5.98
Be7.98

实现方案

方案一:窗口函数法(推荐)

利用ROW_NUMBER()或RANK()窗口函数,按地区分组后对销售额降序排序,取每组排名第一的记录:

-- 先汇总各门店销售额
WITH store_sales AS (
    SELECT 
        Location, 
        Store, 
        SUM(price) AS total_sales
    FROM table1
    GROUP BY Location, Store
)
-- 筛选各地区销售额最高的门店
SELECT Location, Store, total_sales
FROM (
    SELECT 
        *,
        -- 按地区分组,销售额高的排前面
        ROW_NUMBER() OVER (PARTITION BY Location ORDER BY total_sales DESC) AS rn
    FROM store_sales
) t
WHERE rn = 1;
  • 如果同一地区有多个门店销售额并列最高,想要全部返回,把ROW_NUMBER()替换成RANK()即可。

方案二:子查询关联法

先计算每个地区的最高销售额,再关联回门店汇总表匹配结果:

-- 汇总各门店销售额
WITH store_sales AS (
    SELECT 
        Location, 
        Store, 
        SUM(price) AS total_sales
    FROM table1
    GROUP BY Location, Store
),
-- 计算各地区的最高销售额
region_max_sales AS (
    SELECT 
        Location, 
        MAX(total_sales) AS max_sales
    FROM store_sales
    GROUP BY Location
)
-- 关联筛选出符合条件的门店
SELECT ss.Location, ss.Store, ss.total_sales
FROM store_sales ss
JOIN region_max_sales rms 
    ON ss.Location = rms.Location 
    AND ss.total_sales = rms.max_sales;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:39:07