Mysql 按问题分组的SQL
我已经编写了一个查询,它从几个数据源构建了一个小的信息表,它使用一个自制的表来引用最终组的车辆模型,这是查看数据的方式,但是,当我按车辆分组时,它会从group by中漏掉子查询列中的数字,也就是说,如果我按前缀分组,它会显示正确的数字,按车辆分组会隐藏一些数据 前缀可能与两个相似的车型相关,因此需要按车辆分组。请大家从下面的SQL查询中轻松看出我做错了什么Mysql 按问题分组的SQL,mysql,sql,group-by,subquery,Mysql,Sql,Group By,Subquery,我已经编写了一个查询,它从几个数据源构建了一个小的信息表,它使用一个自制的表来引用最终组的车辆模型,这是查看数据的方式,但是,当我按车辆分组时,它会从group by中漏掉子查询列中的数字,也就是说,如果我按前缀分组,它会显示正确的数字,按车辆分组会隐藏一些数据 前缀可能与两个相似的车型相关,因此需要按车辆分组。请大家从下面的SQL查询中轻松看出我做错了什么 SELECT Vehicle, COUNT(`Chassis-No`) AS Stock, ROUND((100/COUNT(`Chas
SELECT Vehicle, COUNT(`Chassis-No`) AS Stock,
ROUND((100/COUNT(`Chassis-No`)) * SUM(CASE WHEN `Vehicle Age` > '182' THEN 1 ELSE 0 END),1) AS Perc6Months,
ROUND((100/COUNT(`Chassis-No`)) * SUM(CASE WHEN `Vehicle Age` > '365' THEN 1 ELSE 0 END),1) AS Perc12Months,
(SELECT COUNT(VIN_Prefix) FROM Orderdownload
INNER JOIN VehicleMatrix ON (`VIN_Prefix` LIKE 'S%' AND Prefix = LEFT(`VIN_Prefix`,2)) OR (`VIN_Prefix` NOT LIKE 'S%' AND Prefix = LEFT(`VIN_Prefix`,1)) WHERE DealerCode = 'AA12345' AND `VIN_Prefix` = IF(LEFT(`Chassis-No`,1)='S',LEFT(`Chassis-No`,2),LEFT(`Chassis-No`,1))) As Qty
FROM DealerAgedStock
INNER JOIN VehicleMatrix AS VM
ON (`Chassis-No` LIKE 'S%' AND Prefix = LEFT(`Chassis-No`,2)) OR (`Chassis-No` NOT LIKE 'S%' AND Prefix = LEFT(`Chassis-No`,1))
WHERE `DL Dealer Code` = 'AA12345'
GROUP BY Vehicle
根据车辆分组,我得到以下信息:
Vehicle | Perc6Months | Perc12Months | Qty
Mondeo | 37.5 | 0 | 2
根据前缀分组,我得到以下结果:
VIN_Prefix | Perc6Months | Perc12Months | Qty
S1 | 25 | 0 | 2
S2 | 50 | 0 | 2
理想情况下,应该这样:
Vehicle | Perc6Months | Perc12Months | Qty
Mondeo | 37.5 | 0 | 4
其中S1和S2与Mondeo车辆相关,因此它给出了子查询的第一个实例,而不是将它们相加
我的问题是:为什么小组成员不将子查询中的数字正确相加?我需要它来添加它们以获得正确的数字…您有什么问题吗?您可以向表中添加标题吗?因此,您似乎没有显示正在使用的查询:选择中的组件名称与预期结果中的组件名称不匹配。这使得您很难知道您实际运行的是什么:您能编辑并更正问题吗?注意,现在更正以反映查询。