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

如何编写SQL查询:获取最高排名行并展示全表销售总额

解决方案

你可以通过以下两种方式实现需求:

方式一:子查询直接获取总额并筛选最高排名行

这种方式最为直接,通过子查询计算全表销售总额,同时筛选出排名最高(RANK=1)的行:

SELECT 
    PRODUCT,
    LOCATION,
    WHS,
    RANK,
    (SELECT SUM(SALES) FROM your_table) AS SALE,
    reason
FROM your_table
WHERE RANK = 1;

方式二:窗口函数同时计算总额和排名(更灵活)

如果需要重新确认或修正排名逻辑(比如确保按销售额降序生成排名),可以用CTE结合窗口函数,同时计算全局总额和分组排名:

WITH processed_data AS (
    SELECT 
        PRODUCT,
        LOCATION,
        WHS,
        RANK,
        SALES,
        reason,
        SUM(SALES) OVER () AS total_sales, -- 计算全表销售总额
        RANK() OVER (PARTITION BY product, location ORDER BY SALES DESC) AS SRank -- 按产品+地区分区,销售额降序排名
    FROM your_table
)
SELECT 
    PRODUCT,
    LOCATION,
    WHS,
    RANK,
    total_sales AS SALE,
    reason
FROM processed_data
WHERE SRank = 1;

说明

  • 方式一中的子查询(SELECT SUM(SALES) FROM your_table)会返回整个表的销售总额340,直接替换原SALES列的值。
  • 方式二的窗口函数SUM(SALES) OVER ()同样会计算全局总额,而RANK() OVER (...)可以确保你按正确的逻辑生成排名(如果原表的RANK列逻辑有误,这种方式可以修正)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:55:13