ClickHouse/docs/ru/sql-reference/aggregate-functions/reference/intervalLengthSum.md
2021-06-04 09:57:58 +03:00

6.1 KiB
Raw Blame History

toc_priority toc_title
146 intervalLengthSum

intervalLengthSum

Вычисляет длину объединения интервалов (отрезков на числовой оси).

Синтаксис

intervalLengthSum(start, end)

Аргументы

!!! info "Примечание" Аргументы должны быть одного типа. В противном случае ClickHouse сгенерирует исключение.

Возвращаемое значение

  • Длина объединения всех интервалов (отрезков на числовой оси). В зависимости от типа аргумента возвращаемое значение может быть типа UInt64 или Float64.

Примеры

  1. Входная таблица:
┌─id─┬─start─┬─end─┐
│ a  │   1.1 │ 2.9 │
│ a  │   2.5 │ 3.2 │
│ a  │     4 │   5 │
└────┴───────┴─────┘

В этом примере используются аргументы типа Float32. Функция возвращает значение типа Float64.

Результатом функции будет сумма длин интервалов [1.1, 3.2] (объединение [1.1, 2.9] и [2.5, 3.2]) и [4, 5]

Запрос:

SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, end)) FROM fl_interval GROUP BY id ORDER BY id;

Результат:

┌─id─┬─intervalLengthSum(start, end)─┬─toTypeName(intervalLengthSum(start, end))─┐
│ a  │                           3.1 │ Float64                                   │
└────┴───────────────────────────────┴───────────────────────────────────────────┘
  1. Входная таблица:
┌─id─┬───────────────start─┬─────────────────end─┐
│ a  │ 2020-01-01 01:12:30 │ 2020-01-01 02:10:10 │
│ a  │ 2020-01-01 02:05:30 │ 2020-01-01 02:50:31 │
│ a  │ 2020-01-01 03:11:22 │ 2020-01-01 03:23:31 │
└────┴─────────────────────┴─────────────────────┘

В этом примере используются аргументы типа DateTime. Функция возвращает значение, выраженное в секундах.

Запрос:

SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, end)) FROM dt_interval GROUP BY id ORDER BY id;

Результат:

┌─id─┬─intervalLengthSum(start, end)─┬─toTypeName(intervalLengthSum(start, end))─┐
│ a  │                          6610 │ UInt64                                    │
└────┴───────────────────────────────┴───────────────────────────────────────────┘
  1. Входная таблица:
┌─id─┬──────start─┬────────end─┐
│ a  │ 2020-01-01 │ 2020-01-04 │
│ a  │ 2020-01-12 │ 2020-01-18 │
└────┴────────────┴────────────┘

В этом примере используются аргументы типа Date. Функция возвращает значение, выраженное в днях.

Запрос:

SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, end)) FROM date_interval GROUP BY id ORDER BY id;

Результат:

┌─id─┬─intervalLengthSum(start, end)─┬─toTypeName(intervalLengthSum(start, end))─┐
│ a  │                             9 │ UInt64                                    │
└────┴───────────────────────────────┴───────────────────────────────────────────┘