WITH t1 AS ( -- 公共宽表
    SELECT
        a.order_id,
        a.product_id,
        a.cnt,
        b.uid,
        a.price * a.cnt AS less_amount,
        b.event_time,
        b.total_amount,
        b.status,
        c.shop_id,
        c.release_time
    FROM tb_order_detail a
    LEFT JOIN tb_order_overall b ON a.order_id = b.order_id
    LEFT JOIN tb_product_info c ON a.product_id = c.product_id
    WHERE status = 1
),
t2 AS ( -- 2021-09-25 到 2021-10-01 901上架产品
    SELECT
           count(distinct product_id) AS total_one
    FROM tb_product_info
    where DATE(release_time) <= '2021-10-01'
    AND shop_id = 901
),
t3 AS ( -- 2021-09-26 到 2021-10-02 901上架产品
    SELECT
           count(distinct product_id) AS total_two
    FROM tb_product_info
    where DATE(release_time) <= '2021-10-02'
    AND shop_id = 901
),
t4 AS ( -- 2021-09-27 到 2021-10-03 901上架产品
    SELECT
           count(distinct product_id) AS total_three
    FROM tb_product_info
    where DATE(release_time) < '2021-10-03'
    AND shop_id = 901
),
t5 AS (-- 901 第一阶段销售
    SELECT count(distinct product_id) AS buy_one,
           MAX(total_one) AS total_one
    FROM t1
    JOIN t2
    WHERE DATE(event_time) BETWEEN '2021-09-25' AND '2021-10-01'
    AND shop_id = 901
    AND cnt > 0
),
t6 AS (
    -- 901 第二阶段销售
    SELECT count(distinct product_id) AS buy_two,
           MAX(total_two) AS total_two
    FROM t1
    JOIN t3
    WHERE DATE(event_time) BETWEEN '2021-09-26' AND '2021-10-02'
    AND shop_id = 901
    AND cnt > 0
),
t7 AS (
    -- 901 第三阶段销售
    SELECT count(distinct product_id) AS buy_three,
           MAX(total_three) AS total_three
    FROM t1
    JOIN t4
    WHERE DATE(event_time) BETWEEN '2021-09-27' AND '2021-10-03'
    AND shop_id = 901
    AND cnt > 0
),
t8 AS (
    -- 所有商店第一阶段
    SELECT count(distinct product_id) AS buy_all_one
    FROM t1
    WHERE DATE(event_time) = '2021-10-01'
    AND cnt >0
),
t9 AS (
    -- 所有商店第二阶段
    SELECT count(distinct product_id) AS buy_all_two
    FROM t1
    WHERE DATE(event_time) = '2021-10-02'
    AND cnt > 0
),
t10 AS (
    -- 所有商店第三阶段
    SELECT count(distinct product_id) AS buy_all_three
    FROM t1
    WHERE DATE(event_time) = '2021-10-03'
    AND cnt > 0
),
t11 AS (
    SELECT * FROM t5
    JOIN t8
),
t12 AS (
    SELECT * FROM t6
    JOIN t9
),
t13 AS (
    SELECT * FROM t7
    JOIN t10
),
t14 AS (
    SELECT IF(buy_all_one = 0, 'Miss' ,'2021-10-01')    AS dt,
           ROUND(IFNULL(buy_one / total_one, 0), 3)     AS sale_rate,
           1 - ROUND(IFNULL(buy_one / total_one, 0), 3) AS unsale_rate
    FROM t11
    UNION ALL
    SELECT IF(buy_all_two = 0, 'Miss' ,'2021-10-02')    AS dt,
           ROUND(IFNULL(buy_two / total_two, 0), 3)     AS sale_rate,
           1 - ROUND(IFNULL(buy_two / total_two, 0), 3) AS unsale_rate
    FROM t12
    UNION ALL
    SELECT IF(buy_all_three = 0, 'Miss' ,'2021-10-03')      AS dt,
           ROUND(IFNULL(buy_three / total_three, 0), 3)     AS sale_rate,
           1 - ROUND(IFNULL(buy_three / total_three, 0), 3) AS unsale_rate
    FROM t13
)
SELECT * FROM t14
WHERE dt != 'Miss';

# 这道题的关键在于 “只要当天任一店铺有任何商品的销量就输出该天的结果” ,这里的当天是指1-2-3三天的时间!