Descrição
O combinador If pode ser aplicado à função argMax
para encontrar o valor de arg que corresponde ao valor máximo de val nas linhas em que a condição é verdadeira,
usando a função de combinador de agregação argMaxIf.
A função argMaxIf é útil quando você precisa encontrar o valor associado
ao valor máximo em um conjunto de dados, mas apenas nas linhas que atendem a uma condição
específica.
Exemplo de uso
Neste exemplo, usaremos um conjunto de dados de vendas de produtos para demonstrar como
argMaxIf funciona. Vamos encontrar o nome do produto com o maior preço, mas
apenas entre os produtos que foram vendidos pelo menos 10 vezes.
CREATE TABLE product_sales
(
product_name String,
price Decimal32(2),
sales_count UInt32
) ENGINE = Memory;
INSERT INTO product_sales VALUES
('Laptop', 999.99, 10),
('Phone', 499.99, 15),
('Tablet', 299.99, 0),
('Watch', 1199.99, 5),
('Headphones', 79.99, 20);
SELECT argMaxIf(product_name, price, sales_count >= 10) AS most_expensive_popular_product
FROM product_sales;A função argMaxIf retornará o nome do produto com o maior preço
entre todos os produtos vendidos pelo menos 10 vezes (sales_count >= 10).
Neste caso, ela retornará 'Laptop', pois é o produto com o maior preço (999.99)
entre os produtos populares.
┌─most_expensi⋯lar_product─┐
1. │ Laptop │
└──────────────────────────┘