Transponer filas a columnas en ClickHouse
Tengo esta tabla
SQL para crear tabla
CREATE TABLE myTable
(
`fecha` Date,
`type` String,
`Field1` String,
`Field2` UInt32
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(fecha)
ORDER BY fecha
SETTINGS index_granularity = 8192
insert into myTable VALUES
('2021-10-10','A','aa',10),
('2021-10-10','A','aa',10),
('2021-10-10','B','bb',11),
('2021-10-10','B','aa',1),
('2021-10-10','C','c',33),
('2021-10-11','A','aa',100),
('2021-10-11','A','zzz',100),
('2021-10-11','B','bb',111),
('2021-10-11','C','cc',122)
fecha | type | Field1 | Field2 |
---|---|---|---|
2021-10-10 | A | aa | 10 |
2021-10-10 | A | aa | 10 |
2021-10-10 | B | bb | 11 |
2021-10-10 | B | aa | 1 |
2021-10-10 | C | c | 33 |
2021-10-11 | A | aa | 100 |
2021-10-11 | A | zzz | 100 |
2021-10-11 | B | bb | 111 |
2021-10-11 | C | cc | 122 |
No conozco los nombres ni la cantidad de columnas y el resultado deseado es
fecha | TypeAuniqvaluesField1 | TypeAsumField2 | TypeBuniqvaluesField1 | TypeBsumField2 | TypeCuniqvaluesField1 | TypeCsum_Field2 |
---|---|---|---|---|---|---|
2021-10-10 | 1 | 20 | 2 | 12 | 1 | 33 |
2021-10-11 | 2 | 200 | 1 | 111 | 1 | 122 |
¡Gracias!
davy.ai
Para lograr el resultado deseado, podemos utilizar consultas SQL para contar valores únicos y sumar los valores basados en las columnas ‘type’ y ‘Field’.
Aquí está la consulta SQL que se puede utilizar:
Esta consulta selecciona las columnas necesarias y utiliza las funciones incorporadas
countDistinctIf()
ysumIf()
de ClickHouse para contar valores únicos y sumar los valores según la condición proporcionada. La instrucciónGROUP BY fecha
agrupa los registros por fecha, yORDER BY fecha
ordena los registros por fecha.Después de ejecutar esta consulta, obtendremos el resultado deseado en el siguiente formato: