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

使用Over Partition By计算门店苹果订单占比结果错误如何解决

SQL计算门店苹果订单占比优化方案

原写法存在的问题

  • 语法不完整:count(distinct case...)缺失右括号,运行会直接报错
  • 逻辑不符预期:未按门店分组聚合,直接使用窗口函数会返回和原数据行数相同的重复结果,无法得到每个门店一行的汇总输出
  • 精度丢失风险:大部分数据库中整数相除默认做截断处理,例如2/3会直接返回0,不会计算小数结果
  • 特殊字段未处理:order no字段包含空格,未用反引号包裹会触发语法错误

正确实现代码

SELECT 
    store,
    CONCAT(
        ROUND(
            COUNT(DISTINCT CASE WHEN product = 'apple' THEN `order no` END) * 100.0 
            / COUNT(DISTINCT `order no`),
        0)
    , '%') AS product
FROM 你的表名
GROUP BY store
ORDER BY product DESC;

逻辑说明

  1. 先按store字段分组,确保每个门店仅返回一行统计结果
  2. 分子计算对应门店product为apple的唯一订单号数量,分母计算对应门店全部唯一订单号数量
  3. 分子提前乘以100.0将整数转为浮点型,规避整数除法截断问题
  4. 用ROUND函数保留0位小数,和示例输出精度匹配
  5. 用CONCAT拼接百分号,直接得到符合要求的百分比格式
  6. 按百分比降序排序,输出顺序和示例完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:18:01