Описание
Комбинатор If можно применять к функции argMax,
чтобы находить значение arg, соответствующее максимальному значению val, для строк, в которых условие истинно,
с помощью агрегатной функции-комбинатора argMaxIf.
Функция argMaxIf полезна, когда нужно найти значение, связанное с
максимальным значением в наборе данных, но только для строк, удовлетворяющих определённому
условию.
Пример использования
В этом примере мы используем набор данных о продажах товаров, чтобы показать, как
работает argMaxIf. Мы найдём название товара с самой высокой ценой, но
только среди товаров, которые были проданы не менее 10 раз.
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;Функция argMaxIf вернёт название товара с самой высокой ценой
среди всех товаров, проданных не менее 10 раз (sales_count >= 10).
В этом случае она вернёт 'Laptop', так как среди популярных товаров
у него самая высокая цена (999.99).
┌─most_expensi⋯lar_product─┐
1. │ Laptop │
└──────────────────────────┘