此题目中需要注意分母为0的情况,在musql中如果分母为0,则返回null,所以可以用ifnull(expression1, expression2) ,先执行expression1,如果expression1 为null则执行expression2
select
product_id,
ifnull(round(sum(if_click)/count(product_id), 3), 0) as ctr,
ifnull(round(sum(if_cart)/sum(if_click), 3), 0) as cart_rate,
ifnull(round(sum(if_payment)/sum(if_cart), 3),0) as payment_rate,
ifnull(round(sum(if_refund)/sum(if_payment),3),0) as refund_rate
from tb_user_event
where date_format(event_time, '%Y%m') = '202110'
group by product_id
having refund_rate <= 0.5
order by product_id