SQL-запрос для большинства заказов относительно типа заказов (покупка / возврат)? - PullRequest
1 голос
/ 22 января 2012

У меня есть следующая таблица для заказов:

Заказы: order_no (ключ), ISBN, количество, тип

ISBN : код книги, количество : сколько книг заказал клиент, тип : либо покупка, либо возврат

Моя цель - найти книгу ( ISBN ) с наибольшим количеством продаж . Это означает, что я должен найти продажи книг, но считая также отдачу от них.

Например : купить 3 книги с ISBN 1010, купить 5 книг с ISBN 2020, вернуть 3 книги с ISBN 2020

книга-бестселлер: ISBN: 1010

Я пытался использовать этот запрос:

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

но, видимо, это неверно.

Есть хорошие идеи?

Ответы [ 3 ]

6 голосов
/ 22 января 2012
SELECT ISBN, SUM(CASE WHEN type = 'return' THEN -1 * quantity ELSE quantity END) as sum
FROM orders
GROUP BY ISBN
ORDER BY sum DESC
0 голосов
/ 22 января 2012

Я думаю, что проблема может быть с вашим псевдонимом.это работает для меня:

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

Вы также должны включить предложение типа WHERE type = "buy", если вы не хотите считать прибыль в том, что вы делаете.

0 голосов
/ 22 января 2012

Вы суммируете как покупки, так и возвраты, вы должны различать их.Примерно так должно работать:

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