В этом разделе описаны встроенные функции создания таблиц, которые могут возвращать более одного ряда. В настоящее время единственными функциями этого класса являются функции генерации рядов, которые принимают в качестве аргумента значение типа {tinyint, smallint, int, bigint, real, double, decimal(10,2), timestamp} и возвращают набор соответствующих значений.
Последовательность исключает стоп-значение.
Функция | Описание | |
---|---|---|
generate_series(start, stop) | Генерирует ряд чисел от начала до остановки с шагом в единицу | |
generate_series(start, stop, step) | Генерирует серию чисел от начала до остановки с увеличением размера шага | |
generate_series(start, stop, step interval) | timestamps и interval | Генерирует серию временных меток с увеличением размера интервала |
sql> SELECT * FROM generate_series(2,4);
+-------+
| value |
+=======+
| 2 |
| 3 |
+-------+
2 tuples
sql> SELECT * FROM generate_series(5,1,-2);
+-------+
| value |
+=======+
| 5 |
| 3 |
+-------+
2 tuples
sql> SELECT current_time() + s.a * interval '1' minute FROM generate_series(0,14,7) AS s(a);
+-----------------------+
| %4 |
+=======================+
| 21:17:20.792948+02:00 |
| 21:24:20.792948+02:00 |
+-----------------------+
2 tuples
sql>SELECT * FROM generate_series(cast('2008-03-01 00:00' as timestamp),
cast('2008-03-04 12:00' as timestamp),
interval '10' hour);
+----------------------------+
| value |
+============================+
| 2008-03-01 00:00:00.000000 |
| 2008-03-01 10:00:00.000000 |
| 2008-03-01 20:00:00.000000 |
| 2008-03-02 06:00:00.000000 |
| 2008-03-02 16:00:00.000000 |
| 2008-03-03 02:00:00.000000 |
| 2008-03-03 12:00:00.000000 |
| 2008-03-03 22:00:00.000000 |
+----------------------------+
8 tuples