是否可以减去2个子查询的值并返回差异?

时间:2017-08-21 21:14:05

标签: mysql subquery

这背后的逻辑是我想从销售的产品中减去退回的产品。这样我就会销售一定数量的产品。子查询返回数值,但我不确定如何从这些子查询中获得差异。

SELECT COUNT(QUANTITY_ORDERED) FROM PRODUCTS
WHERE 
(SELECT COUNT(QUANTITY_ORDERED) FROM PRODUCTS WHERE CATEGORY ='SOLD')-(SELECT COUNT(QUANTITY_ORDERED) FROM PRODUCTS WHERE CATEGORY='RETURNED')

1 个答案:

答案 0 :(得分:0)

只需执行条件SUM()而不是COUNT()

SELECT product_id, 
       SUM(CASE WHEN CATEGORY ='SOLD' THEN QUANTITY_ORDERED ELSE 0 END)
     - SUM(CASE WHEN CATEGORY ='RETURNED' THEN QUANTITY_ORDERED ELSE 0 END) as total
FROM products
GROUP BY product_id

OR

SELECT product_id, 
       COUNT(CASE WHEN CATEGORY ='SOLD' THEN 0 END)
     - COUNT(CASE WHEN CATEGORY ='RETURNED' THEN 0 END) as total
FROM products
GROUP BY product_id