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

Snowflake环境下求分组求和后的最大值SQL实现求助

解决方案:在Snowflake中分组求和并获取最大值

嗨,作为论坛和SQL的新手,完全能理解你找不到适配方案的困惑,别担心,这就帮你搞定问题!

首先我们要先按DIV、PROD和CUST三个维度分组,计算每组的QTY总和,再从这些总和里找出最大值。这里给你两种实用的方法:

方法1:子查询/CTE + MAX()函数

先通过公共表表达式(CTE)或者子查询算出分组求和的结果,再对这个结果取最大值,逻辑清晰易懂:

用CTE(可读性更强)

WITH grouped_sums AS (
    SELECT 
        DIV,
        PROD,
        CUST,
        SUM(QTY) AS total_qty
    FROM 
        your_table_name  -- 记得替换成你的实际表名
    GROUP BY 
        DIV, PROD, CUST
)
SELECT MAX(total_qty) AS max_total_qty
FROM grouped_sums;

用子查询

如果不习惯CTE,也可以直接嵌套子查询:

SELECT MAX(total_qty) AS max_total_qty
FROM (
    SELECT 
        SUM(QTY) AS total_qty
    FROM 
        your_table_name  -- 替换为你的实际表名
    GROUP BY 
        DIV, PROD, CUST
) AS subquery;

方法2:窗口函数(同时查看分组信息和最大值)

如果你不仅想要最大值,还想同步看到每个分组的总和以及对应的全局最大值,可以用窗口函数MAX() OVER():

SELECT 
    DIV,
    PROD,
    CUST,
    SUM(QTY) AS total_qty,
    MAX(SUM(QTY)) OVER() AS overall_max_qty
FROM 
    your_table_name  -- 替换为你的实际表名
GROUP BY 
    DIV, PROD, CUST;

这个查询会返回每个分组的详细信息,同时每行都会显示所有分组总和中的最大值。

用你的示例数据验证

按你的示例数据计算,分组求和后结果是:

  • Sonic(DIV1、PRODx):10+9=19
  • McD(DIV1、PRODx):8
  • Wendy's(DIV1、PRODx):10
    最终最大值就是19,上面的几种查询都能得到这个结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:13:21