Як отримати підсумки кожного стовпця MySQL - mysql, sql, mysql-workbench, totals

У мене є запит SQL, який отримує кількість робочих місць, вагової ваги і т. Д. Для різних компаній.

Результат роботи в MySQL Workbench виглядає так: введіть опис зображення тут

Я хотів би додати ще одне стовпці внизу, яке обчислює загальну суму кожного стовпця, тобто загальна кількість стовпців завдання становить 267. Як я можу додати додатковий рядок для підсумкових даних?

SQL-запит:

select
c.Name,
COUNT(distinct jn.ID) as Jobs,
SUM(jn.ActualWeight) as GrossWt,
SUM(jpc.AdvisedQty) AS Units_In,
SUM(jpd.AdvisedQty) AS Units_Out
FROM customer c
LEFT JOIN job_new jn ON jn.JobOwnerID = c.ID
LEFT JOIN job_pieces jp ON jp.JobID = jn.ID
LEFT JOIN job_pieces jpc ON jpc.JobID = jn.ID AND jn.CollectMemberID = jn.JobOwnerID
LEFT JOIN job_pieces jpd ON jpd.JobID = jn.ID AND jn.DeliverMemberID = jn.JobOwnerID
WHERE jn.IsActive = 1 GROUP BY jn.JobOwnerID

Відповіді:

4 для відповіді № 1

Ви шукаєте GROUP BY модифікатор WITH ROLLUP:

select c.Name,
COUNT(distinct jn.ID) as Jobs,
SUM(jn.ActualWeight) as GrossWt,
SUM(jpc.AdvisedQty) AS Units_In,
SUM(jpd.AdvisedQty) AS Units_Out
FROM customer c LEFT JOIN
job_new jn
ON jn.JobOwnerID = c.ID LEFT JOIN
job_pieces jp
ON jp.JobID = jn.ID LEFT JOIN
job_pieces jpc
ON jpc.JobID = jn.ID AND jn.CollectMemberID = jn.JobOwnerID LEFT JOIN
job_pieces jpd
ON jpd.JobID = jn.ID AND jn.DeliverMemberID = jn.JobOwnerID
WHERE jn.IsActive = 1
GROUP BY c.Name WITH ROLLUP;

Примітка. Я також змінив GROUP BY ключ з двох причин. По-перше, це дійсно має співпадати зі стовпцем, що використовується в SELECT. По-друге, ви використовували значення з a LEFT JOINed table, тому цінність може бути NULL. Це звичайно небажано.


Схожі запитання
Найбільш популярний