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

SQL两次JOIN关联多表时统计结果占总数量百分比的计算问题

SQL需求问题修正方案

现有代码存在的问题

  • 过滤条件错误:WHERE子句中Drive_Type筛选值写为"Automatic"(自动挡),但需求是统计Stick shift(手动挡)的福特车辆持有量
  • 语法错误:子查询计算总关联记录数的部分缺少右括号,会直接触发语法报错
  • 字段冗余:SELECT列表中包含了Drive_Type字段,不符合预期输出的字段要求
  • 整数除法兼容问题:部分数据库(如MySQL、SQL Server)默认整数相除会截断小数位,直接计算会得到0的错误结果
  • 格式不匹配:未对计算结果拼接%符号,和预期输出格式不符

修正后的SQL语句

SELECT 
    c.name,
    COUNT(u.Drive_Type) AS Total,
    CONCAT(ROUND(COUNT(u.Drive_Type) * 100.0 / (
        SELECT COUNT(*) 
        FROM `User` u
        JOIN Join_bridge jb ON u.ID = jb.user_ID
        JOIN Car c ON c.car_ID = jb.car_has_ID 
    ), 0), '%') AS percentage
FROM `User` u
JOIN Join_bridge jb ON u.ID = jb.user_ID
JOIN Car c ON c.car_ID = jb.car_has_ID  
WHERE c.name = 'Ford' AND u.Drive_Type = 'Stick shift'
GROUP BY c.name;

逻辑说明

  • 对SQL关键字User用反引号包裹,避免语法冲突
  • 修正Drive_Type筛选值为Stick shift匹配统计需求
  • 调整计算顺序,先乘100.0触发浮点运算,避免整数除法导致的结果错误
  • 使用ROUND函数保留整数位后拼接%符号,完全匹配预期输出格式
  • 增加GROUP BY分组规则,兼容SQL严格模式的语法校验要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:15:04