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

sumForEach

Описание

Комбинатор ForEach может быть применён к агрегатной функции sum, чтобы преобразовать её из агрегатной функции, работающей со значениями строк, в агрегатную функцию, работающую со столбцами-массивами и применяющую агрегирование к каждому элементу массива по всем строкам.

Пример использования

В этом примере мы воспользуемся набором данных hits, доступным в нашем SQL playground.

Таблица hits содержит столбец isMobile типа UInt8, который может быть 0 для настольных устройств или 1 для мобильных:

SELECT EventTime, IsMobile FROM metrica.hits ORDER BY rand() LIMIT 10

We'll use the sumForEach aggregate combinator function to analyze how desktop versus mobile traffic varies by hour of the day. Click the play button below to run the query interactively:

SELECT
    toHour(EventTime) AS hour_of_day,
    -- Используем sumForEach для подсчёта посещений с десктопа и мобильных устройств за один проход
    sumForEach([
        IsMobile = 0, -- Посещения с десктопа (IsMobile = 0)
        IsMobile = 1  -- Посещения с мобильных устройств (IsMobile = 1)
    ]) AS device_counts
FROM metrica.hits
GROUP BY hour_of_day
ORDER BY hour_of_day;

См. также