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;