Сумма совпадающих записей в SQL - PullRequest
0 голосов
/ 25 июня 2018

В этой базе данных мне нужно найти общую сумму, которую каждый клиент заплатил за книги в категории, а затем отсортировать их по их идентификатору.Кажется, что код работает правильно, но я получаю примерно на 20 дополнительных строк больше, чем нужно, хотя в правильных строках сумма кажется правильной.

Идентификатор клиента является частью customer, но это не такдолжен появиться в предложении select, когда я пытаюсь ORDER BY, я получаю странные ошибки.Механизм БД - DB2.

SELECT distinct customer.name, book.cat, sum(offer.price) AS COST
FROM offer

INNER JOIN purchase ON purchase.title=offer.title
INNER JOIN customer ON customer.cid=purchase.cid
INNER JOIN member ON member.cid=customer.cid
INNER JOIN book ON book.title=offer.title

WHERE
member.club=purchase.club
AND member.cid=purchase.cid AND purchase.club=offer.club
GROUP BY customer.name, book.cat;

1 Ответ

0 голосов
/ 25 июня 2018

Вы должны исправить свои join условия, чтобы включить те в условие where (между табличными отношениями обычно лучше вписывается в предложение on).

SELECT DISTINCT почти никогда не подходит для GROUP BY.

Но это не ваш вопрос. Вы можете использовать функцию агрегирования:

GROUP BY customer.name, book.cat
ORDER BY MIN(customer.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...