Saltar al contenido principal

Uso de agregados filtrados

ClickHouse ofrece una forma sencilla e intuitiva de escribir agregados filtrados. Por ejemplo, compare la forma estándar en SQL de escribir agregados filtrados (que funcionan bien en ClickHouse) con la sintaxis abreviada que utiliza el combinador de funciones de agregación -If, que puede añadirse a cualquier función de agregado:
--SQL estándar
SELECT
   avg(number)
FILTER (WHERE number > 50)
FROM numbers(100)

--ClickHouse usando un combinador de agregación
SELECT
   avgIf(number, number > 50)
FROM numbers(100)
Asimismo, existe un combinador de agregación -Distinct:
--SQL estándar
SELECT avg(DISTINCT number)

--ClickHouse usando un combinador de agregación
SELECT avgDistinct(number)
¿Por qué son importantes los agregados filtrados? Porque permiten implementar la funcionalidad de “comparación de segmentos” en los servicios de analítica web. Por ejemplo:
WITH
   Region = 'us' AS segment1,
   Browser = 'Chrome' AS segment2
SELECT
   uniqIf(UserID, segment1),
   uniqIf(UserID, segment2)
WHERE segment1 OR segment2
Consulta la página sobre combinadores de funciones de agregación en la documentación para obtener más información.
Última modificación el 10 de junio de 2026