GROUP BY上的SQL GROUP BY问题

时间:2014-12-02 13:18:07

标签: mysql sql group-by subquery

我编写了一个查询,该查询从几个数据源构建一个小型信息表,它使用自制表来引用最终组的车辆模型,通过该表可以查看数据的方式但是,当我按车辆分组时,它会忽略子组中子查询列中的数字,即如果我按前缀分组显示正确的数字,则按车辆分组隐藏一些数据。

前缀可能与几种类似的车型相关,因此需要按车辆分组。任何人都可以从下面的SQL查询中轻松地看到我做错了什么。

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相对于Vehicle Mondeo,因此它给了我第一个子查询实例,而不是将它们加在一起。

我的问题是:为什么Group By没有从子查询中正确地添加数字?我需要它来添加它们以获得正确的数字......

0 个答案:

没有答案