問題となっているのはデカルト積です(1つのテーブルの行が他のテーブルの行で乗算されています)。次のアプローチでは、すべてのプロジェクトに、従業員が割り当てられたワークロード(クエリにはemployeeテーブルへの結合が表示されないため、すべての従業員が考慮されます)とタスクがあると想定しています。そうでない場合は、内部結合ではなく外部結合を行うことを検討してください。
アイデアは、プロジェクト番号に基づいて独自の派生テーブルで各集計を実行することです。次に、派生した各テーブルをプロジェクト番号で結合して、意味のある結果を得ることができます。
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;