このcreateステートメントで定義された2つのテーブルがあります
CREATE TABLE PROJECT (project_name varchar(255), project_budget int, dedicated_project_leader int, dedicated_lead_developer int, dedicated_lead_consultant int, company_id int, project_id int, PRIMARY KEY (project_id));
CREATE TABLE WORKER (worker_name varchar(255), worker_salary int, worker_anual_bonus int, worker_type varchar(255), leader int, company_id int, project_id int, worker_id int, PRIMARY KEY (worker_id));
プロジェクトの予算の合計を労働者の数で割るよりもお願いしたいのですが---)
SELECT (SUM(p.project_budget) / (SELECT count(WORKER.WORKER_NAME) from WORKER)) as AVG_BONUS
FROM PROJECT p;
残念ながら、これにより「ORA--00937:単一グループのグループ関数ではありません」という例外が発生します。
ただし、このクエリを実行すると:
SELECT count(WORKER.WORKER_NAME) from WORKER)
結果は次のようになります。
16
予算の合計を結果ではなく数値で割ると、次のようになります。
SELECT (SUM(p.project_budget) / 16) as AVG_BONUS
FROM PROJECT p;
私も完璧な結果を得ました。
294117,647058823
解決策は、プロジェクトテーブルで定義されたIDでグループ化する必要があることですが、それが論理的だとは思わない....
SELECT (SUM(p.project_budget) / (SELECT count(WORKER.WORKER_NAME) from WORKER)) as AVG_BONUS
FROM PROJECT p
GROUP BY p.company_id;
それも機能しています。
なぜ私がそれを使用できないのか、誰か提案がありますか? (group byなしのselectで2つのグループ関数が存在できないのは、SQL言語仕様だけのような気がします...)