В SQL часто требуется сгенерировать последовательность чисел или дат для отчётов, тестовых данных или анализа временных рядов.
Вместо ручного создания таблиц или массивов можно использовать встроенную функцию
GENERATE_SERIES:SELECT *
FROM generate_series(1, 10) AS number;
Функция отлично работает и с датами, позволяя создавать последовательность с нужным шагом или произвольный интервал:
SELECT *
FROM generate_series('2025-01-01'::date, '2025-01-07'::date, '1 day') AS day;
Можно использовать вместе с JOIN для заполнения пропусков в таблицах:
SELECT d.day, COALESCE(o.total, 0) AS total_orders
FROM generate_series('2025-01-01'::date, '2025-01-07'::date, '1 day') AS d(day)
LEFT JOIN orders o ON o.order_date = d.day;
🔥 Подходит для аналитики, построения сквозных временных рядов и подготовки тестовых наборов данных без лишних ручных операций.
➡️ SQL Ready | #практика