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

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

最佳答案

只需执行条件 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

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

关于mysql - 是否可以减去 2 个子查询的值并返回差值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805619/

相关文章:

mysql - 如何进行查询以获取所有产品及其评论

mysql - 为什么这个简单的连接查询使用子查询会明显更快?

sql - 复杂的存储过程

mysql - 如何在 SQL 中执行迭代

sql - 确定 Hive 中 avg(col) 的 MAX

mysql - lat lng自动从固定位置到数据库中的lan lng距离(澳大利亚)

php - Laravel Eloquent 足球比赛日程中的多重关系

php - 我的 URL 中需要连字符

php - 在 Swift (iOS) 上使用 Apache/Nginx/FastCGI 服务 PHP/MySQL

MySQL 子查询 - MySQL 3.23