结合MySQL查询会得到错误的答案
好的,我们有很多客户的销售数据。我可以通过一个简单的查询轻松找到查询,以获得每个销售代表的总销售额:结合MySQL查询会得到错误的答案,mysql,group-by,sum,Mysql,Group By,Sum,好的,我们有很多客户的销售数据。我可以通过一个简单的查询轻松找到查询,以获得每个销售代表的总销售额: SELECT `MerchantAddresses`.`Rep Number` AS `Rep Number`, SUM(`RESIDUALS_2010_12`.`Qual Cr Vol` + `RESIDUALS_2010_12`.`Qual Ch Vol`) AS `VOL_2010_12`, `Reps`.`First` AS `First`,
SELECT `MerchantAddresses`.`Rep Number` AS `Rep Number`,
SUM(`RESIDUALS_2010_12`.`Qual Cr Vol` + `RESIDUALS_2010_12`.`Qual Ch Vol`) AS `VOL_2010_12`,
`Reps`.`First` AS `First`,
`Reps`.`Last` AS `Last`
FROM `MerchantAddresses`, `RESIDUALS_2010_12`, `Reps`
WHERE `RESIDUALS_2010_12`.`MID` = `MerchantAddresses`.`MID` AND
`Reps`.`ID` = `MerchantAddresses`.`Rep Number`
GROUP BY `MerchantAddresses`.`Rep Number`
ORDER BY SUM(`RESIDUALS_2010_12`.`Qual Cr Vol` + `RESIDUALS_2010_12`.`Qual Ch Vol`) DESC
这段代码运行完全正常,返回一个表,该表按销售代表对单个月的总销售额进行分组。目前,我们已经运行了三个单独的查询来获取3个月的销售数据。我想将这三个查询合并为一个查询
因此,我做了以下工作:
SELECT `MerchantAddresses`.`Rep Number` AS `Rep Number`,
SUM(`RESIDUALS_2010_12`.`Qual Cr Vol` + `RESIDUALS_2010_12`.`Qual Ch Vol`) AS `VOL_2010_12`,
SUM(`RESIDUALS_2010_11`.`Qual Cr Vol` + `RESIDUALS_2010_11`.`Qual Ch Vol`) AS `VOL_2010_11`,
SUM(`RESIDUALS_2010_10`.`Qual Cr Vol` + `RESIDUALS_2010_10`.`Qual Ch Vol`) AS `VOL_2010_10`,
`Reps`.`First` AS `First`,
`Reps`.`Last` AS `Last`
FROM `MerchantAddresses`, `RESIDUALS_2010_12` JOIN ON `RESIDUALS_2010_11` JOIN ON `RESIDUALS_2010_10`, `Reps`
WHERE `RESIDUALS_2010_12`.`MID` = `MerchantAddresses`.`MID` AND
`RESIDUALS_2010_11`.`MID` = `MerchantAddresses`.`MID` AND
`RESIDUALS_2010_10`.`MID` = `MerchantAddresses`.`MID` AND
`Reps`.`ID` = `MerchantAddresses`.`Rep Number`
GROUP BY `MerchantAddresses`.`Rep Number`
ORDER BY SUM(`RESIDUALS_2010_12`.`Qual Cr Vol` + `RESIDUALS_2010_12`.`Qual Ch Vol`) DESC
我发现这个查询实际上得到了不正确的值。这是可行的,但我为每个销售代表获得的数量价值实际上太小了
有什么想法吗?谢谢 我认为你不能只加入这些月度表格,因为它们实际上并没有这样的关联。他们共用同一个商户地址,但仅此而已 使用UNION ALL,可以组合多个查询的结果。这样,您可以在子查询中获取所有月度记录的值,并在父查询中求和 我冒昧地在您的查询中添加了一些别名
SELECT
m.`Rep Number`,
SUM(m.vol10) as VOL_2010_10,
SUM(m.vol11) as VOL_2010_11,
SUM(m.vol12) as VOL_2010_12,
m.First,
m.Last
FROM
(
SELECT
ma.`Rep Number`,
r10.`Qual Cr Vol` + r10.`Qual Ch Vol` AS vol10,
null as vol11,
null as vol12
FROM
MerchantAddresses ma
INNER JOIN RESIDUALS_2010_10 as r10 on r10.MID = ma.MID
UNION ALL
SELECT
ma.`Rep Number`,
null as vol10,
r11.`Qual Cr Vol` + r11.`Qual Ch Vol` AS vol11,
null as vol12
FROM
MerchantAddresses ma
INNER JOIN RESIDUALS_2010_11 as r11 on r11.MID = ma.MID
UNION ALL
SELECT
ma.`Rep Number`,
null as vol10,
null as vol11,
r12.`Qual Cr Vol` + r12.`Qual Ch Vol` AS vol12
FROM
MerchantAddresses ma
INNER JOIN RESIDUALS_2010_12 as r12 on r12.MID = ma.MID
) m
INNER JOIN Reps r ON r.ID = m.`Rep Number`
GROUP BY
m.`Rep Number`
ORDER BY
SUM(m.vol12) DESC