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

如何在Snowflake中按固定行数分组进行聚合操作

Snowflake中按固定3行分组聚合的实现方法

核心思路是先给每一行分配分组ID,让连续的3行归属同一个分组,再基于分组ID执行聚合操作,步骤如下:

  1. 生成分组ID
    利用ROW_NUMBER()函数按唯一键排序后给每行分配行号,再通过整数除法将每3行映射到同一个分组ID:
SELECT
    unique_key,
    target_column, -- 你需要聚合的列
    (ROW_NUMBER() OVER (ORDER BY unique_key) - 1) / 3 AS group_id
FROM your_input_table;
  • ORDER BY unique_key:因为所有键唯一,按键排序能保证分组的连续性
  • (行号-1)/3:Snowflake中整数相除会自动取整,因此第1-3行的group_id为0,第4-6行为1,以此类推
  1. 基于分组ID执行聚合
    将上面的查询作为子查询,外层按group_id分组,使用你需要的聚合函数(SUM、AVG、MAX等):
SELECT
    group_id,
    MIN(unique_key) AS group_min_key, -- 可选,展示分组内的最小唯一键
    SUM(target_column) AS total -- 替换为你的聚合逻辑,比如AVG(target_column)
FROM (
    SELECT
        unique_key,
        target_column,
        (ROW_NUMBER() OVER (ORDER BY unique_key) - 1) / 3 AS group_id
    FROM your_input_table
) grouped_data
GROUP BY group_id
ORDER BY group_id;

如果希望分组ID从1开始计数,只需把分组ID的计算改成:

FLOOR((ROW_NUMBER() OVER (ORDER BY unique_key) - 1) / 3) + 1 AS group_id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:51:24