Перейти к основному содержимому
Перейти к основному содержимому

argMaxIf

Описание

Комбинатор 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                   │
   └──────────────────────────┘

См. также