好的,所以我一直试图让这个查询现在工作几个小时,但我似乎没有做任何事情会让我得到我想要的结果。
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;
所以上面两个查询工作正常。每个人都可以通过gener找到花在产品或剪发和团体上的总量,从而分别为男性和女性提供切割和产品的总花费。然而,我需要以某种方式将这些组合在一起以便能够显示性别( s)在产品上花费比在理发上花费更多。
非常感谢任何帮助。
P.S希望这个问题很清楚。如果不是,请尝试详细说明。
答案 0 :(得分:0)
另一种可以将您的查询结果加入
的方法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主键,...)
表2列(category_id外键,...)
然后您可以轻松使用USING()
SELECT * FROM
Table1
JOIN Table2
USING(category_id )
但是如果您有关联的不同名称,那么您需要使用ON()
子句