好的,我已经试着让这个查询工作了几个小时了,但是我似乎做的任何事情都无法得到我想要的结果。
SELECT COALESCE(SUM(ps.cost), 0) AS ps_total
FROM Customers c
LEFT JOIN ProductSales ps ON c.customer_ID = ps.customer_ID
GROUP BY c.sex;
SELECT COALESCE(SUM(hc.cost), 0) AS hc_total
FROM Customers c
LEFT JOIN HairCuts hc ON c.customer_ID = hc.customer_ID
GROUP BY c.sex;因此,上述两个查询工作良好。每个人都会发现在产品、理发和群体上的总花销是按性别划分的,从而给出了男性和女性individually.However在剪发和产品上的总支出,我需要将它们组合在一起,这样我就可以显示出花在产品上的性别,而不是理发了。
如果能在这方面提供任何帮助,我们将不胜感激。
P.S .希望问题足够清楚。如果不是的话,我会尽量详细说明。
发布于 2014-05-04 07:26:39
另一种方法是将两个查询结果合并为
SELECT t1.sex,
COALESCE(t1.ps_total - t2.hc_total,0) AS `difference`
FROM
(SELECT COALESCE(SUM(ps.cost), 0) AS ps_total ,c.sex
FROM Customers c
LEFT JOIN ProductSales ps ON c.customer_ID = ps.customer_ID
GROUP BY c.sex) t1
LEFT JOIN
(SELECT COALESCE(SUM(hc.cost), 0) AS hc_total ,c.sex
FROM Customers c
LEFT JOIN HairCuts hc ON c.customer_ID = hc.customer_ID
GROUP BY c.sex) t2
USING(sex)
HAVING difference > 0从注释编辑
我对ON()子句使用了简短的语法,如USING(sex) = ON(t1.sex=t2.sex),如果两个表中的列名称相同,则可以使用USING(),如果有不同,则需要使用ON()语法
喜欢
Table1列(category_id主键.) Table2列(category_id外键.)
那么您就可以轻松地使用USING()了。
SELECT * FROM
Table1
JOIN Table2
USING(category_id )但如果关联的名称不同,则需要使用ON()子句。
https://stackoverflow.com/questions/23453633
复制相似问题