У меня есть таблица со следующими функциями: идентификатор счета, billing_period_start, billing_period_end и items_purchased в течение этого периода.
Я хочу разбить диапазон дат по отдельным датам.Диапазон дат может содержаться в течение одного месяца, но он также может быть неравномерно распределен по двум месяцам.Это эффективно создаст намного больше записей, чем в настоящее время в таблице.После того, как я это сделаю, мне нужно равномерно распределить количество купленных предметов между этими датами диапазона дат.
billing_period_start billing_period_end
-------------------- ------------------
2010-03-05 2010-03-07
2010-04-29 2010-05-05
2010-06-29 2006-08-12
billing_date
------------
2010-03-05
2010-03-06
2010-03-07
2010-04-29
2010-04-30
2010-05-01
...
2010-05-05
2010-06-29
2010-06-30
...
2010-08-12
Теперь, когда диапазон дат разбит на отдельные даты, мне нужно взять items_purchase иразделите его на количество дней в расчетном периоде для каждой даты, чтобы у меня была items_purchase_per_date.
select
invoice_line_id AS invoice_id
,items_purchased
,billing_period_start
,billing_period_end
,date_from_parts(YEAR(billing_period_start), MONTH(billing_period_start), 1) AS period1_month_start
,last_day(month_start, month) AS period1_month_end
,datediff(day, billing_period_start, billing_period_end) + 1 AS billing_period_length
from "INVOICE_DATA"
order by 1;
Я запускаю это на Snowflake, но могу легко конвертировать из mySQL, если кто-то знаетэта СУБД лучше.