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