Комбинатор If можно применить к функции avg,
чтобы вычислить среднее арифметическое значений по строкам, для которых условие истинно,
с помощью функции агрегатного комбинатора avgIf.
В этом примере мы создадим таблицу для хранения данных о продажах с флагами успешности
и используем avgIf, чтобы вычислить среднюю сумму продажи для успешных транзакций.
CREATE TABLE sales(
transaction_id UInt32,
amount Decimal(10,2),
is_successful UInt8
) ENGINE = MergeTree
ORDER BY ();
INSERT INTO sales VALUES
(1, 100.50, 1),
(2, 200.75, 1),
(3, 150.25, 0),
(4, 300.00, 1),
(5, 250.50, 0),
(6, 175.25, 1);
SELECT
avgIf(amount, is_successful = 1) AS avg_successful_sale
FROM sales;
Функция avgIf вычислит среднее значение только для тех строк, где is_successful = 1.
В этом случае будет вычислено среднее для значений 100.50, 200.75, 300.00 и 175.25.
┌─avg_successful_sale─┐
1. │ 193.88 │
└─────────────────────┘
Последнее изменение 10 июня 2026 г.