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 segment2Consulte a página sobre combinadores de funções de agregação na documentação para mais detalhes.