2021-06-02 16:45:33 +00:00
---
2022-04-09 13:29:05 +00:00
sidebar_position: 146
sidebar_label: intervalLengthSum
2021-06-02 16:45:33 +00:00
---
# intervalLengthSum {#agg_function-intervallengthsum}
2021-06-04 06:57:58 +00:00
Вычисляет длину объединения интервалов (отрезков на числовой оси).
2021-06-02 16:45:33 +00:00
**Синтаксис**
``` sql
intervalLengthSum(start, end)
```
**Аргументы**
- `start` — начальное значение интервала. [Int32 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [Int64 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [UInt32 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [UInt64 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [Float32 ](../../../sql-reference/data-types/float.md#float32-float64 ), [Float64 ](../../../sql-reference/data-types/float.md#float32-float64 ), [DateTime ](../../../sql-reference/data-types/datetime.md#data_type-datetime ) или [Date ](../../../sql-reference/data-types/date.md#data_type-date ).
- `end` — конечное значение интервала. [Int32 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [Int64 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [UInt32 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [UInt64 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ), [Float32 ](../../../sql-reference/data-types/float.md#float32-float64 ), [Float64 ](../../../sql-reference/data-types/float.md#float32-float64 ), [DateTime ](../../../sql-reference/data-types/datetime.md#data_type-datetime ) или [Date ](../../../sql-reference/data-types/date.md#data_type-date ).
2022-04-09 13:29:05 +00:00
:::info "Примечание"
2021-06-02 16:45:33 +00:00
Аргументы должны быть одного типа. В противном случае ClickHouse сгенерирует исключение.
2022-08-10 19:08:40 +00:00
:::
2021-06-02 16:45:33 +00:00
**Возвращаемое значение**
2021-06-04 06:57:58 +00:00
- Длина объединения всех интервалов (отрезков на числовой оси). В зависимости от типа аргумента возвращаемое значение может быть типа [UInt64 ](../../../sql-reference/data-types/int-uint.md#uint8-uint16-uint32-uint64-int8-int16-int32-int64 ) или [Float64 ](../../../sql-reference/data-types/float.md#float32-float64 ).
2021-06-02 16:45:33 +00:00
**Примеры**
1. Входная таблица:
``` text
┌─id─┬─start─┬─end─┐
2021-06-04 06:57:58 +00:00
│ a │ 1.1 │ 2.9 │
│ a │ 2.5 │ 3.2 │
2021-06-02 16:45:33 +00:00
│ a │ 4 │ 5 │
└────┴───────┴─────┘
```
2021-06-02 19:04:46 +00:00
В этом примере используются аргументы типа Float32. Функция возвращает значение типа Float64.
2021-06-04 06:57:58 +00:00
Результатом функции будет сумма длин интервалов `[1.1, 3.2]` (объединение `[1.1, 2.9]` и `[2.5, 3.2]` ) и `[4, 5]`
2021-06-02 19:04:46 +00:00
Запрос:
2021-06-02 16:45:33 +00:00
``` sql
SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, end)) FROM fl_interval GROUP BY id ORDER BY id;
```
Результат:
``` text
2021-06-04 06:57:58 +00:00
┌─id─┬─intervalLengthSum(start, end)─┬─toTypeName(intervalLengthSum(start, end))─┐
│ a │ 3.1 │ Float64 │
└────┴───────────────────────────────┴───────────────────────────────────────────┘
2021-06-02 16:45:33 +00:00
```
2. Входная таблица:
``` text
┌─id─┬───────────────start─┬─────────────────end─┐
2021-06-04 06:57:58 +00:00
│ 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 │
2021-06-02 16:45:33 +00:00
│ a │ 2020-01-01 03:11:22 │ 2020-01-01 03:23:31 │
└────┴─────────────────────┴─────────────────────┘
```
2021-06-02 19:04:46 +00:00
В этом примере используются аргументы типа DateTime. Функция возвращает значение, выраженное в секундах.
Запрос:
2021-06-02 16:45:33 +00:00
``` sql
SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, end)) FROM dt_interval GROUP BY id ORDER BY id;
```
Результат:
``` text
┌─id─┬─intervalLengthSum(start, end)─┬─toTypeName(intervalLengthSum(start, end))─┐
│ a │ 6610 │ UInt64 │
└────┴───────────────────────────────┴───────────────────────────────────────────┘
```
3. Входная таблица:
``` text
┌─id─┬──────start─┬────────end─┐
│ a │ 2020-01-01 │ 2020-01-04 │
│ a │ 2020-01-12 │ 2020-01-18 │
└────┴────────────┴────────────┘
```
2021-06-02 19:04:46 +00:00
В этом примере используются аргументы типа Date. Функция возвращает значение, выраженное в днях.
Запрос:
2021-06-02 16:45:33 +00:00
``` sql
SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, end)) FROM date_interval GROUP BY id ORDER BY id;
```
Результат:
``` text
┌─id─┬─intervalLengthSum(start, end)─┬─toTypeName(intervalLengthSum(start, end))─┐
│ a │ 9 │ UInt64 │
└────┴───────────────────────────────┴───────────────────────────────────────────┘
```