Jde o kartézský součin (kde se řádky v jedné tabulce násobí řádky v ostatních tabulkách). Předpoklad, který vychází z následujícího přístupu, je, že každý projekt má pracovní vytížení s přiřazenými zaměstnanci (z nichž všichni představují všechny zaměstnance, protože váš dotaz neukazuje spojení s tabulkou zaměstnanců) a úkoly. Pokud tomu tak není, zvažte provedení vnějšího spojení oproti vnitřnímu spojení.
Cílem je provést každou agregaci ve vlastní odvozené tabulce na základě čísla projektu. Poté můžeme spojit každou odvozenou tabulku podle čísla projektu, abychom získali smysluplné výsledky.
SELECT
p.NAME,
w.workload_sum AS "Total Workload",
e.employee_count AS "Total Employees",
t.task_count AS "Finished Tasks"
from p
JOIN (select pno, sum(workload) as workload_sum
from w
group by pno) w ON (w.pno=p.pnumber)
JOIN (select pno, count(distinct w.essn) as employee_count
from w
group by pno) e ON (e.pno=p.pnumber)
JOIN (select pno, count(distinct t.name) as task_count
from t
group by pno) t ON (t.pno=p.pnumber)
WHERE t.END_DATE is NOT NULL;