Pular para o conteúdo principal

Como usar agregações filtradas

O ClickHouse oferece uma forma simples e intuitiva de escrever agregações filtradas. Por exemplo, compare a forma padrão de escrever agregações filtradas em SQL (que funciona perfeitamente no ClickHouse) com a sintaxe abreviada que usa o combinador de função agregada -If combinador de função agregada, que pode ser acrescentado a qualquer função agregada:
--SQL padrão
SELECT
   avg(number)
FILTER (WHERE number > 50)
FROM numbers(100)

--ClickHouse usando um combinador de função agregada
SELECT
   avgIf(number, number > 50)
FROM numbers(100)
Da mesma forma, há o combinador de agregação -Distinct:
--SQL padrão
SELECT avg(DISTINCT number)

--ClickHouse usando um combinador de função agregada
SELECT avgDistinct(number)
Por que as agregações filtradas são importantes? Porque elas permitem implementar o recurso de “comparação de segmentos” em serviços de web analytics. Por exemplo:
WITH
   Region = 'us' AS segment1,
   Browser = 'Chrome' AS segment2
SELECT
   uniqIf(UserID, segment1),
   uniqIf(UserID, segment2)
WHERE segment1 OR segment2
Consulte a página sobre combinadores de funções de agregação na documentação para mais detalhes.
Última modificação em 10 de junho de 2026