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

u7up0aaq  于 2022-12-18  发布在  Oracle
关注(0)|答案(3)|浏览(182)

所以我有这个[数据库的结构] x1c 0d1x
我还得做一个所有购买物品的总结,减去每一件没有购买特定类别食品“巴拿马”的人购买的物品。
问题是,我知道如何得到两个求和,但我不知道如何减去它们。
有了这句话,我得到了每一个项目购买的结论:

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'

在本例中,当前的结果是(58 - 5),但我希望自动计算它

9vw9lbht

9vw9lbht1#

如果两个查询都已经给予了想要的结果,只需将它们 Package 到另一个SELECT中。
给予这个:

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'
    )

)
zdwk9cvp

zdwk9cvp2#

您必须按如下方式修改此代码:

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 dual
daupos2t

daupos2t3#

根据您的描述,您只需要CA.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'

相关问题