WITH t1 AS (SELECT transaction_id,
DATE_FORMAT(purchased_at, '%Y-%m-%d') as order_date
FROM transactions
WHERE DATE_FORMAT(purchased_at, '%Y-%m') IN ('2023-11', '2023-12')
AND is_online_order = True
ORDER BY purchased_at),
t2 AS (SELECT
order_date,
COUNT(DISTINCT transaction_id) as num_orders
FROM
t1
GROUP BY order_date
)
SELECT t2.order_date,
DATE_FORMAT(t2.order_date, '%W') as weekday,
t2.num_orders as num_orders_today,
t2.num_orders + IF(t2.order_date = '2023-11-01', 0, t3.num_orders) as num_orders_from_yesterday
FROM t2 LEFT JOIN t2 t3 ON
t2.order_date = DATE_ADD(t3.order_date, INTERVAL 1 DAY)