WITH a AS (
    SELECT 
        DATE(event_time) AS dt,
        product_id
    FROM tb_order_overall
    JOIN tb_order_detail USING(order_id)
    JOIN tb_product_info USING(product_id)
    WHERE shop_id = 901
)
SELECT 
    t.dt,
    ROUND(COUNT(DISTINCT a.product_id) / t.onsale_cnt, 3) AS sale_rate,
    ROUND(1 - COUNT(DISTINCT a.product_id) / t.onsale_cnt, 3) AS unsale_rate
FROM (
    SELECT 
        d.dt,
        COUNT(DISTINCT p.product_id) AS onsale_cnt
    FROM (
        SELECT DISTINCT DATE(event_time) AS dt
        FROM tb_order_overall
        WHERE DATE(event_time) BETWEEN '2021-10-01' AND '2021-10-03'
    ) d
    JOIN tb_product_info p 
      ON p.shop_id = 901 AND p.release_time <= d.dt
    GROUP BY d.dt
) t
LEFT JOIN a 
    ON a.dt BETWEEN DATE_SUB(t.dt, INTERVAL 6 DAY) AND t.dt
GROUP BY t.dt
ORDER BY t.dt;