Как сгруппировать по отформатированному строковому полю? - PullRequest
1 голос
/ 26 мая 2020

У меня проблема, и мне нужна ваша помощь. Вот моя проблема: у меня есть таблица

id     | total 
1_2    |  12
1_2_3  |  13
1_2    |  14
1_2_5  |  14
1_1_1  |  14

Обычная группа по идентификатору приведет к

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

Но мне нужна группа по идентификатору, который идентификатор поля формата. Пример, я разделил 1_2_3 на 1_2 и 1_2_4 на 1_2 И окончательный результат

    id    | total 
    1_2   | 26 +13+14 = 43 
    1_1_1 | 14

Как я могу сгруппировать таким методом?

1 Ответ

2 голосов
/ 28 мая 2020

Предположим, вы хотите группировать до второго подчеркивания. Получается две группы 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 ;
...