现有用户对展示的商品行为表tb_user_event id uid product_id event_time if_click if_cart if_payment if_refund 1 101 8001 2021-10-01 10:00:00 0 0 0 0 2 102 8001 2021-10-01 10:00:00 1 0 0 0 3 103 8001 2021-10-01 10:00:00 1 1 0 0 4 104 8001 2021-10-02 10:00:00 1 1 1 0 5 105 8001 2021-10-02 10:00:00 1 1 1 0 6 101 8002 2021-10-03 10:00:00 1 1 1 0 7 109 8001 2021-10-04 10:00:00 1 1 1 1 (uid-用户ID, product_id-商品ID, event_time-行为时间, if_click-是否点击, if_cart-是否加购物车, if_payment-是否付款, if_refund-是否退货退款) 问题:请统计2021年10月每个有展示记录的退货率不大于0.5的商品各项指标, 注: 商品点展比=点击数÷展示数; 加购率=加购数÷点击数; 成单率=付款数÷加购数;退货率=退款数÷付款数, 当分母为0时整体结果记为0,结果中各项指标保留3位小数,并按商品ID升序排序。 输出示例: 示例数据的输出结果如下 product_id ctr cart_rate payment_rate refund_rate 8001 0.833 0.800 0.750 0.333 8002 1.000 1.000 1.000 0.000 解释: 在2021年10月商品8001被展示了6次,点击了5次,加购了4次,付款了3次,退款了1次,因此点击率为56=0.833,加购率为45=0.800, 成单率为34=0.750,退货率为13=0.333(保留3位小数);
示例1

输入

DROP TABLE IF EXISTS tb_user_event;
CREATE TABLE tb_user_event (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    uid INT NOT NULL COMMENT '用户ID',
    product_id INT NOT NULL COMMENT '商品ID',
    event_time datetime COMMENT '行为时间',
    if_click TINYINT COMMENT '是否点击',
    if_cart TINYINT COMMENT '是否加购物车',
    if_payment TINYINT COMMENT '是否付款',
    if_refund TINYINT COMMENT '是否退货退款'
) CHARACTER SET utf8 COLLATE utf8_bin;

INSERT INTO tb_user_event(uid, product_id, event_time, if_click, if_cart, if_payment, if_refund) VALUES
  (101, 8001, '2021-10-01 10:00:00', 0, 0, 0, 0),
  (102, 8001, '2021-10-01 10:00:00', 1, 0, 0, 0),
  (103, 8001, '2021-10-01 10:00:00', 1, 1, 0, 0),
  (104, 8001, '2021-10-02 10:00:00', 1, 1, 1, 0),
  (105, 8001, '2021-10-02 10:00:00', 1, 1, 1, 0),
  (101, 8002, '2021-10-03 10:00:00', 1, 1, 1, 0),
  (109, 8001, '2021-10-04 10:00:00', 1, 1, 1, 1);

输出

8001|0.833|0.800|0.750|0.333
8002|1.000|1.000|1.000|0.000
加载中...