首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询,子查询减去子查询?

SQL查询,子查询减去子查询?
EN

Stack Overflow用户
提问于 2014-05-04 07:13:45
回答 1查看 887关注 0票数 1

好的,我已经试着让这个查询工作了几个小时了,但是我似乎做的任何事情都无法得到我想要的结果。

代码语言:javascript
复制
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 .希望问题足够清楚。如果不是的话,我会尽量详细说明。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-04 07:26:39

另一种方法是将两个查询结果合并为

代码语言:javascript
复制
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()了。

代码语言:javascript
复制
SELECT * FROM
Table1 
JOIN Table2 
USING(category_id )

但如果关联的名称不同,则需要使用ON()子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23453633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档