如何按格式化字符串字段分组?
How to group by a formatted string field?
我有一个问题需要你的帮助。以下是我的问题:
我有一个 table
id | total
1_2 | 12
1_2_3 | 13
1_2 | 14
1_2_5 | 14
1_1_1 | 14
按 id 正常分组会得到结果
SELECT id , sum(total) id | total
FROM mybucket -> 1_2 | 26
GROUP BY id 1_2_3 | 13
1_2_5 | 14
1_1_1 | 14
但我想按格式字段 id 的 id 分组。示例我将 1_2_3 拆分为 1_2 并将 1_2_4 拆分为 1_2
最终结果
id | total
1_2 | 26 +13+14 = 43
1_1_1 | 14
如何用这种方法分组?
假设您想要分组直到第二个下划线。您得到两组 1_2、1_1(不是 1_1_1)
SELECT nid AS id, SUM(total) AS total
FROM mybucket
LET nid = CASE WHEN ARRAY_LENGTH(SPLIT(id, "_")) > 2 THEN CONCAT(SPLIT(id, "_")[0],"_",SPLIT(id, "_")[1]) ELSE id END;
GROUP BY nid ;
我有一个问题需要你的帮助。以下是我的问题: 我有一个 table
id | total
1_2 | 12
1_2_3 | 13
1_2 | 14
1_2_5 | 14
1_1_1 | 14
按 id 正常分组会得到结果
SELECT id , sum(total) id | total
FROM mybucket -> 1_2 | 26
GROUP BY id 1_2_3 | 13
1_2_5 | 14
1_1_1 | 14
但我想按格式字段 id 的 id 分组。示例我将 1_2_3 拆分为 1_2 并将 1_2_4 拆分为 1_2 最终结果
id | total
1_2 | 26 +13+14 = 43
1_1_1 | 14
如何用这种方法分组?
假设您想要分组直到第二个下划线。您得到两组 1_2、1_1(不是 1_1_1)
SELECT nid AS id, SUM(total) AS total
FROM mybucket
LET nid = CASE WHEN ARRAY_LENGTH(SPLIT(id, "_")) > 2 THEN CONCAT(SPLIT(id, "_")[0],"_",SPLIT(id, "_")[1]) ELSE id END;
GROUP BY nid ;