WITH t1 AS ( SELECT product_id, count(product_id) AS show_num, sum(if_click) AS click_num, sum(if_cart) AS cart_num, sum(if_payment) AS pay_num, sum(if_refund) AS refund_num FROM tb_user_event WHERE SUBSTR(event_time,1,7) = '2021-10' GROUP BY product_id ) SELECT product_id, ROUND(click_num / show_num,3) AS ctr, ROUND(cart_num / click_num,3) AS cart_rate, ROUND(pay_num / cart_num,3) AS payment_rate, ROUND(refund_num / pay_num,3) AS refund_rate FROM t1 HAVING refund_rate <= 0.5 ORDER BY product_id ASC ; # 这道题关键在于不大于0.5