Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

sumForEach

Описание

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

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

В этом примере мы будем использовать набор данных hits, доступный в нашей Песочнице ClickHouse.

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

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

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

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;

См. также

Navigation