SELECT
fecha,
length(groupUniqArrayIf(Field1, type = 'A')) AS Type_A_1,
sumIf( Field2, type = 'A') AS Type_A_2,
length(groupUniqArrayIf(Field1, type = 'B')) AS Type_B_1,
sumIf( Field2, type = 'B') AS Type_B_2,
length(groupUniqArrayIf(Field1, type = 'C')) AS Type_C_1,
sumIf( Field2, type = 'C') AS Type_C_2
FROM myTable
GROUP BY fecha
┌──────fecha─┬─Type_A_1─┬─Type_A_2─┬─Type_B_1─┬─Type_B_2─┬─Type_C_1─┬─Type_C_2─┐
│ 2021-10-10 │ 1 │ 30 │ 2 │ 12 │ 1 │ 33 │
│ 2021-10-11 │ 2 │ 200 │ 1 │ 111 │ 1 │ 122 │
└────────────┴──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘
SELECT
fecha,
length(groupUniqArrayIf(Field1, type = 'A')) AS Type_A_1,
arraySum(groupArrayIf( Field2, type = 'A')) AS Type_A_2,
length(groupUniqArrayIf(Field1, type = 'B')) AS Type_B_1,
arraySum(groupArrayIf( Field2, type = 'B')) AS Type_B_2,
length(groupUniqArrayIf(Field1, type = 'C')) AS Type_C_1,
arraySum(groupArrayIf( Field2, type = 'C')) AS Type_C_2
FROM myTable
GROUP BY fecha
┌──────fecha─┬─Type_A_1─┬─Type_A_2─┬─Type_B_1─┬─Type_B_2─┬─Type_C_1─┬─Type_C_2─┐
│ 2021-10-10 │ 1 │ 30 │ 2 │ 12 │ 1 │ 33 │
│ 2021-10-11 │ 2 │ 200 │ 1 │ 111 │ 1 │ 122 │
└────────────┴──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘
SELECT
fecha,
length(Type_A.1) AS Type_A_1,
arraySum(Type_A.2) AS Type_A_2,
length(Type_B.1) AS Type_B_1,
arraySum(Type_B.2) AS Type_B_2,
length(Type_C.1) AS Type_C_1,
arraySum(Type_C.2) AS Type_C_2
FROM
(
SELECT
fecha,
sumMapIf([Field1], [Field2], type = 'A') AS Type_A,
sumMapIf([Field1], [Field2], type = 'B') AS Type_B,
sumMapIf([Field1], [Field2], type = 'C') AS Type_C
FROM myTable
GROUP BY fecha
)
┌──────fecha─┬─Type_A_1─┬─Type_A_2─┬─Type_B_1─┬─Type_B_2─┬─Type_C_1─┬─Type_C_2─┐
│ 2021-10-10 │ 1 │ 30 │ 2 │ 12 │ 1 │ 33 │
│ 2021-10-11 │ 2 │ 200 │ 1 │ 111 │ 1 │ 122 │
└────────────┴──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘
SELECT
fecha,
untuple(anyIf(f, type = 'A')),
untuple(anyIf(f, type = 'B')),
untuple(anyIf(f, type = 'C'))
FROM
(
SELECT
fecha,
type,
(length((sumMap([Field1], [Field2]) AS x).1), arraySum(x.2)) AS f
FROM myTable
GROUP BY
fecha,
type
)
GROUP BY fecha;
┌──────fecha─┬─tupleElement(anyIf(f, equals(type, 'A')), 1)─┬─tupleElement(anyIf(f, equals(type, 'A')), 2)─┬─tupleElement(anyIf(f, equals(type, 'B')), 1)─┬─tupleElement(anyIf(f, equals(type, 'B')), 2)─┬─tupleElement(anyIf(f, equals(type, 'C')), 1)─┬─tupleElement(anyIf(f, equals(type, 'C')), 2)─┐
│ 2021-10-10 │ 1 │ 30 │ 2 │ 12 │ 1 │ 33 │
│ 2021-10-11 │ 2 │ 200 │ 1 │ 111 │ 1 │ 122 │
└────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┘
SELECT
fecha,
groupArrayIf((Field1, Field2), type = 'A') AS Type_A,
groupArrayIf((Field1, Field2), type = 'B') AS Type_B,
groupArrayIf((Field1, Field2), type = 'C') AS Type_C
FROM myTable
GROUP BY fecha
┌──────fecha─┬─Type_A──────────────────────────┬─Type_B───────────────┬─Type_C───────┐
│ 2021-10-10 │ [('aa',10),('aa',10),('aa',10)] │ [('bb',11),('aa',1)] │ [('c',33)] │
│ 2021-10-11 │ [('aa',100),('zzz',100)] │ [('bb',111)] │ [('cc',122)] │
└────────────┴─────────────────────────────────┴──────────────────────┴──────────────┘
SELECT
fecha,
type,
sumMap([Field1], [Field2])
FROM myTable
GROUP BY
fecha,
type
┌──────fecha─┬─type─┬─sumMap(array(Field1), array(Field2))─┐
│ 2021-10-10 │ B │ (['aa','bb'],[1,11]) │
│ 2021-10-10 │ C │ (['c'],[33]) │
│ 2021-10-11 │ A │ (['aa','zzz'],[100,100]) │
│ 2021-10-10 │ A │ (['aa'],[30]) │
│ 2021-10-11 │ C │ (['cc'],[122]) │
│ 2021-10-11 │ B │ (['bb'],[111]) │
└────────────┴──────┴──────────────────────────────────────┘
SELECT
fecha,
sumMapIf([Field1], [Field2], type = 'A') AS Type_A,
sumMapIf([Field1], [Field2], type = 'B') AS Type_B,
sumMapIf([Field1], [Field2], type = 'C') AS Type_C
FROM myTable
GROUP BY fecha
┌──────fecha─┬─Type_A───────────────────┬─Type_B───────────────┬─Type_C─────────┐
│ 2021-10-10 │ (['aa'],[30]) │ (['aa','bb'],[1,11]) │ (['c'],[33]) │
│ 2021-10-11 │ (['aa','zzz'],[100,100]) │ (['bb'],[111]) │ (['cc'],[122]) │
└────────────┴──────────────────────────┴──────────────────────┴────────────────┘
SELECT
fecha,
arrayStringConcat(Type_A.1, '/') AS Type_A_1,
arraySum(Type_A.2) AS Type_A_2,
arrayStringConcat(Type_B.1, '/') AS Type_B_1,
arraySum(Type_B.2) AS Type_B_2,
arrayStringConcat(Type_C.1, '/') AS Type_C_1,
arraySum(Type_C.2) AS Type_C_2
FROM
(
SELECT
fecha,
sumMapIf([Field1], [Field2], type = 'A') AS Type_A,
sumMapIf([Field1], [Field2], type = 'B') AS Type_B,
sumMapIf([Field1], [Field2], type = 'C') AS Type_C
FROM myTable
GROUP BY fecha
)
┌──────fecha─┬─Type_A_1─┬─Type_A_2─┬─Type_B_1─┬─Type_B_2─┬─Type_C_1─┬─Type_C_2─┐
│ 2021-10-10 │ aa │ 30 │ aa/bb │ 12 │ c │ 33 │
│ 2021-10-11 │ aa/zzz │ 200 │ bb │ 111 │ cc │ 122 │
└────────────┴──────────┴──────────┴──────────┴──────────┴──────────┴──────────┘