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
相关产品推荐
相关产品推荐

