<SQL>
SELECT
date,
"year",
"month",
"quarter",
"week",
"day",
gross_margin,
SUM(gross_margin) OVER (PARTITION BY "year", "month" ORDER BY date ROWS UNBOUNDED PRECEDING) AS mtd_gross_margin,
missing_date_indicator
FROM (
SELECT
date,
"year",
"quarter",
EXTRACT(MONTH FROM date) AS "month",
"week",
"day",
gross_margin,
missing_date_indicator
FROM (
SELECT
date,
"year",
EXTRACT(QUARTER FROM date) AS "quarter",
"month",
"week",
"day",
gross_margin,
missing_date_indicator
FROM (
SELECT
date,
EXTRACT(year FROM date) AS "year",
"quarter",
"month",
"week",
"day",
gross_margin,
missing_date_indicator
FROM (
SELECT
date,
"year",
"quarter",
"month",
"week",
"day",
COALESCE(gross_margin, 0.0) AS gross_margin,
CASE WHEN ((gross_margin IS NULL)) THEN 1.0 WHEN NOT ((gross_margin IS NULL)) THEN 0.0 END AS missing_date_indicator
FROM (
SELECT
COALESCE(LHS.date, RHS.date) AS date,
"year",
"quarter",
"month",
"week",
"day",
gross_margin
FROM (
SELECT date, "year", "quarter", "month", "week", "day"
FROM (
SELECT
DATE_TRUNC('day', date) AS date,
"year",
"quarter",
"month",
"week",
"day"
FROM (
SELECT *, EXTRACT(day FROM date) AS "day"
FROM (
WITH DATE_SERIES AS (
SELECT
GENERATE_SERIES(
MIN(DATE_TRUNC('day', DATE '2021-05-18'::date::date))::DATE
,MAX(DATE_TRUNC('day', DATE '2024-04-20'::date::date))::DATE
,INTERVAL '1 day'
) AS DATE_LIST),
CALENDAR_TBL AS (
SELECT
UNNEST(DATE_LIST)::DATE AS date
FROM DATE_SERIES
)
SELECT *
,EXTRACT(YEAR FROM date) AS year
,EXTRACT(QUARTER FROM date) AS quarter
,EXTRACT(month FROM date) AS month
,FLOOR((EXTRACT(DOY FROM date) - 1) / 7) + 1 AS week
FROM CALENDAR_TBL
) AS q01
) AS q01
) AS q01
GROUP BY date, "year", "quarter", "month", "week", "day"
) AS LHS
FULL JOIN (
SELECT date, SUM(gross_margin) AS gross_margin
FROM (
SELECT
*,
DATE_TRUNC('day', order_date) AS date,
'day' AS time_unit
FROM sales
) AS q01
GROUP BY date
) AS RHS
ON (LHS.date = RHS.date)
) AS q01
) AS q01
) AS q01
) AS q01
) AS q01