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

sumForEach

Описание

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

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

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

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

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

Мы используем агрегатор sumForEach, чтобы проанализировать, как трафик с настольных ПК и мобильных устройств варьируется по часам дня. Нажмите кнопку воспроизведения ниже, чтобы выполнить запрос интерактивно:

SELECT
    toHour(EventTime) AS hour_of_day,
    -- Use sumForEach to count desktop and mobile visits in one pass
    sumForEach([
        IsMobile = 0, -- Desktop visits (IsMobile = 0)
        IsMobile = 1  -- Mobile visits (IsMobile = 1)
    ]) AS device_counts
FROM metrica.hits
GROUP BY hour_of_day
ORDER BY hour_of_day;

См. также