关于订单类型(买/卖)的大多数订单的SQL查询?

时间:2012-01-21 20:39:24

标签: mysql sql sql-order-by sum

我的订单有以下表格:

  

订单:order_no(密钥),ISBN,数量,类型

ISBN :本书的代码, 数量:客户订购了多少本书, type :买入或返回

我的目标是通过最畅销找到 图书( ISBN )。 这意味着我必须找到书籍的销售但是 还要计算它们的回报。

例如: 买3本书,ISBN 1010, 用ISBN 2020购买5本书, 返回3本ISBN 2020的书籍

畅销书:ISBN:1010

我尝试使用此查询:

"SELECT 
    ISBN, SUM( quantity ) as sum
FROM 
    orders
GROUP BY 
    ISBN
ORDER BY
    sum DESC"

但显然这是假的。

有什么好主意吗?

3 个答案:

答案 0 :(得分:6)

SELECT ISBN, SUM(CASE WHEN type = 'return' THEN -1 * quantity ELSE quantity END) as sum
FROM orders
GROUP BY ISBN
ORDER BY sum DESC

答案 1 :(得分:0)

您要总结购买和退货,您应该区分它们。这样的事情应该有效:

SELECT 
    ISBN, SUM( IF(type = 'buy', quantity, -quantity) ) as sum
FROM 
    orders
GROUP BY 
    ISBN
ORDER BY
    sum DESC

答案 2 :(得分:-1)

我认为问题可能在于您的别名。这对我有用:

SELECT ISBN, SUM(Qty)
FROM orders
GROUP BY ISBN
ORDER BY SUM(Qty)

如果你不想计算你所做的回报,你还应该包括像WHERE type =“buy”这样的条款。