для меня кажется, что вы хотите выбрать из календарной таблицы.Вот как вы можете решить свою проблему.Вы заметите, что запрос выглядит немного хакерским, потому что Redshift не поддерживает какие-либо функции для генерации последовательностей, что оставляет вас самостоятельно создавать таблицы последовательностей (см. seq_10
и seq_1000
).Если у вас есть последовательность, вы можете легко создать calendar
со всей необходимой информацией (например, day_of_month
).
Это вопрос, отвечающий на ваш вопрос:
WITH seq_10 as (
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1
), seq_1000 as (
select
row_number() over () - 1 as n
from
seq_10 a cross join
seq_10 b cross join
seq_10 c
), calendar as (
select '2018-01-01'::date + n as date,
extract(day from date) as day_of_month,
extract(dow from date) as day_of_week
from seq_1000
)
select count(*) from calendar
where day_of_month = 2
and date between '2019-06-14' and '2019-10-09'