Для каждой отдельной книги необходимо вывести информацию о количестве проданных экземпляров в 2 последующих годах
Дали учебную задачу:
Для каждой отдельной книги необходимо вывести информацию о количестве проданных экземпляров и их стоимости за текущий и предыдущий год . Вычисляемые столбцы назвать Количество и Сумма. Информацию отсортировать по убыванию стоимости.
Я придумал такой код:
SELECT title, SUM(buy_book.amount) AS Количество, SUM(price*buy_book.amount) AS Сумма
FROM buy_book
INNER JOIN book ON book.book_id = buy_book.book_id
INNER JOIN buy ON buy.buy_id = buy_book.buy_id
INNER JOIN buy_step ON buy_step.buy_id = buy.buy_id
WHERE buy_step.date_step_end IS NOT NULL
GROUP BY title
UNION ALL
SELECT title, COUNT(buy_archive.amount) AS Количество, SUM(buy_archive.price*buy_archive.amount) AS Сумма
FROM buy_archive
INNER JOIN book ON book.book_id = buy_archive.book_id
GROUP BY title
ORDER BY Сумма DESC;
Он конечно же полностью не отрабатывает. Не группирует он продажи этого года и прошлого, те что в buy_archive. Нужен вложенный запрос, но как его правильно построить умишки не хватает. Подскажите кто захочет.
Ответы (1 шт):
SELECT title, SUM(Количество) AS Количество, SUM(Сумма) AS Сумма
FROM (SELECT book.title, SUM(buy_book.amount) AS Количество,
SUM(book.price*buy_book.amount) AS Сумма
FROM buy_book
INNER JOIN book USING (book_id)
INNER JOIN buy USING(buy_id)
INNER JOIN buy_step USING(buy_id)
INNER JOIN step USING(step_id)
WHERE name_step ='Оплата' AND date_step_end IS NOT NULL
GROUP BY book.title
UNION ALL
SELECT book.title, SUM(buy_archive.amount) AS Количество,
SUM(buy_archive.price*buy_archive.amount) AS Сумма
FROM buy_archive
INNER JOIN book USING (book_id)
GROUP BY book.title) AS qwert
GROUP BY title
ORDER BY Сумма DESC
