SQL:如何从两个不同的查询中减去两个SUM()函数的结果

SQL:如何从两个不同的查询中减去两个SUM()函数的结果,sql,oracle,Sql,Oracle,所以我有这个[数据库的结构] 我必须对所有购买的物品进行统计,减去那些没有购买特定类别“PANADERIA”食品的人购买的每一件物品 问题是我知道如何得到两个疗养院,但我找不到减去它们的方法 有了这句话,我得到了每一件购买物品的消费: SELECT SUM(CO.CANTIDAD) FROM CLIENTE CL JOIN COMPRA CO ON CO.DNI = CL.DNI 这样,我就得到了其他类别中的Summary,CATEGORIA不是“PANADERIA”: SELECT SUM

所以我有这个[数据库的结构]

我必须对所有购买的物品进行统计,减去那些没有购买特定类别“PANADERIA”食品的人购买的每一件物品

问题是我知道如何得到两个疗养院,但我找不到减去它们的方法

有了这句话,我得到了每一件购买物品的消费:

SELECT SUM(CO.CANTIDAD) 
FROM CLIENTE CL
JOIN COMPRA CO ON CO.DNI = CL.DNI
这样,我就得到了其他类别中的Summary,CATEGORIA不是“PANADERIA”:

SELECT SUM(CO.CANTIDAD) 
FROM CLIENTE CL
JOIN COMPRA CO ON CO.DNI = CL.DNI
JOIN PRODUCTO PR ON PR.IDP = CO.IDP
JOIN CATEGORIA CA ON CA.IDC = PR.IDC
WHERE CA.CATEGORIA = 'PANADERIA'

在这种情况下,现在的结果是(58-5),但我想自动计算它

如果两个查询都已经给出了您想要的结果,只需将它们包装到另一个
选择

试试这个:

SELECT (
    (
        SELECT SUM(CO.CANTIDAD) 
        FROM CLIENTE CL
        JOIN COMPRA CO ON CO.DNI = CL.DNI
    )
    -
    (
        SELECT SUM(CO.CANTIDAD) 
        FROM CLIENTE CL
        JOIN COMPRA CO ON CO.DNI = CL.DNI
        JOIN PRODUCTO PR ON PR.IDP = CO.IDP
        JOIN CATEGORIA CA ON CA.IDC = PR.IDC
        WHERE CA.CATEGORIA = 'PANADERIA'
    )

)

你能帮我标记一下数据库吗?上面说我实际上需要使用关键字FROM。所以我把它和一个随机表放在一起,然后我得到5行,然后在SELECT之后的句子开头添加distinct,它就工作了。现在我只得到一行数字53。您没有发布RDBMS,其中一些不需要来自的
。MySQL:
SELECT((选择(5*2)作为'A')-(选择(2+3)作为'A'))
工作正常。但是,是的,你的变通方法可能会对这里有所帮助。对不起,伙计,这是我第一次来stackoverflow寻求帮助。无论如何,非常感谢。没问题。。。很高兴我帮助你走上了正确的道路。