You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL聚合函数中应用逐行条件逻辑:MySQL SKU转化率计算

计算SKU指定价格下的转化率(满足数据量条件)

嘿,我来帮你搞定这个MySQL的计算需求!首先咱们先明确两张表的合理结构(如果你的表字段名不一样,直接替换就行):

假设的表结构

  • 明日待售SKU定价表(sku_tomorrow_pricing):
    • sku_id:SKU唯一标识
    • tomorrow_price:明日拟售价格
  • SKU历史销售访客表(sku_sales_visitor_history):
    • sku_id:SKU唯一标识
    • price:历史销售时的价格
    • visitor_count:该价格下的访客数
    • order_count:该价格下的订单数

接下来,咱们可以通过关联两张表,匹配明日价格对应的历史数据,然后计算转化率,同时过滤出符合数据量要求的记录,对不满足条件的也做相应处理(你原问题没写完,我这里提供两种常见的处理方式,你可以按需调整):

解决方案SQL

SELECT
    tp.sku_id,
    tp.tomorrow_price,
    -- 满足条件时计算转化率,否则返回NULL或标记
    CASE
        WHEN svh.visitor_count >= 100 OR (svh.visitor_count >= 50 AND svh.order_count >= 1)
            THEN ROUND(svh.order_count / svh.visitor_count, 4) -- 保留4位小数,按需调整
        ELSE NULL -- 或者替换为 '数据不足' 这类文本标记
    END AS conversion_rate,
    svh.visitor_count,
    svh.order_count
FROM
    sku_tomorrow_pricing tp
LEFT JOIN
    sku_sales_visitor_history svh
ON
    tp.sku_id = svh.sku_id
    AND tp.tomorrow_price = svh.price
-- 若只想保留有对应历史数据的SKU,把LEFT JOIN改成INNER JOIN即可
ORDER BY
    tp.sku_id;

关键逻辑解释

  • 关联方式:用LEFT JOIN确保所有明日待售的SKU都能被列出,哪怕没有对应价格的历史数据(此时visitor_count和order_count会为NULL,最终conversion_rate也会是NULL)
  • 条件判断:CASE语句严格匹配你要求的两个阈值条件,只有满足其一才计算有效转化率
  • 可读性优化:用ROUND函数控制转化率的小数位数,避免冗余的小数影响阅读
  • 灵活调整:如果需要给不满足条件的SKU明确标识,把ELSE NULL改成ELSE '数据不足'即可(注意此时conversion_rate字段类型会变为字符串,按需选择)

如果你的原问题里对不满足条件的SKU有特定处理逻辑(比如用同类SKU均值填充、直接忽略等),可以补充细节,我再帮你调整SQL!

内容的提问来源于stack exchange,提问作者Brad Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:24:12