Проблема SQL относительно получения суммы повторяющихся строк - PullRequest
0 голосов
/ 16 февраля 2019

Это мой sql-запрос, чтобы получить следующую таблицу:

select c.name, s.company, p.qty, p.qty * p.price as Total
from client c, purchase p, stock s
where c.clno = p.clno AND s.company = p.company
group by c.name, s.company, p.qty, p.qty * p.price
order by sum(p.qty) desc

Вывод вышеуказанного запроса выглядит следующим образом:

Name  |  Company  |  Qty  |  Total
John      ABC         12       100
Bob       XYZ         10       150
John      ABC          5        50
Bob       XYZ         20       250
Bob       XYZ          2        20
Nav       QRS         10       150
John      ABC         10       150

Я хочу запроситьполучить вывод следующим образом:

Name  |  Company  |  Qty  |  Total
John      ABC         27       300
Bob       XYZ         32       420
Nav       QRS         10       150

1 Ответ

0 голосов
/ 16 февраля 2019

На данный момент ваш запрос использует GROUP BY, но фактически не агрегирует данные.Вы хотите GROUP BY имя и компанию и SUM количества и суммы, например:

select c.name, s.company, SUM(p.qty), SUM(p.qty * p.price) as Total
from client c
inner join purchase p on c.clno = p.clno
inner join stock s on s.company = p.company
group by c.name, s.company
order by Total desc

Другие замечания относительно вашего запроса:

  • всегда вместо этого используйте явные объединенияиз неявных
  • вы можете использовать псевдонимы столбцов в предложении ORDER BY (здесь Total; это может упростить чтение запроса
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...