我的订单有以下表格:
订单: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"
但显然这是假的。
有什么好主意吗?
答案 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”这样的条款。