テーブル NEW_DEPTS を作成したいと考えています。DEPARTMENTS テーブルに DEPARTMENT_ID と DEPARTMENT_NAME があります。
desc departments
Name Null? Type
------------------------------- -------- ----
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
私の EMPLOYEES テーブルには以下が含まれます。
desc employees
Name Null? Type
------------------------------- -------- ----
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
ここで、DEPARTMENT_ID と DEPARTMENT_NAME および各部門の合計 SALARY を含むテーブル NEW_DEPTS を作成したいと考えています。各部門には特定の数の従業員がいるため、部門番号 10、20、30 などについて、合計給与を計算する必要があります。
私の主なクエリは次のとおりです。
create table new_depts as
select d.department_id,d.department_name,sum(e.salary) dept_sal
from employees e,departments d
where e.department_id = d.department_id;
エラーが発生しました:
select d.department_id,d.department_name,sum(e.salary) dept_sal
*
ERROR at line 2:
ORA-00937: not a single-group group function
それで、私はそれをググった。sum、avg、max、min などのグループ関数は、select ステートメントでは使用できないことがわかりました。GROUP BY 句が必要でした。だから、私はそれを個別に解決したかったのです。したがって、「テーブルの作成...」ステートメントをスキップして、次のように書きました。
select distinct d.department_id,d.department_name,sum(e.salary) dept_sal
from employees e,departments d
where e.department_id = d.department_id
group by department_id;
エラーが発生しました:
group by department_id;
*
ERROR at line 4:
ORA-00911: invalid character
それから私は書いた:
select d.department_id,d.department_name,sum(e.salary) dept_sal
from employees e,departments d
where e.department_id = d.department_id
group by d.department_id;
エラーが発生しました:
select d.department_id,d.department_name,sum(e.salary) dept_sal
*
ERROR at line 1:
ORA-00979: not a GROUP BY expression
それから私は書いた:
select d.department_id,d.department_name,sum(e.salary) dept_sal
from employees e,departments d
where e.department_id = d.department_id
group by department_id;
エラーが発生しました:
group by department_id
*
ERROR at line 4:
ORA-00918: column ambiguously defined
私はそれが「結合」であることを知っています。しかし、GROUP FUNCTION が正しく実行されるように GROUP BY 句を配置する方法がわかりません。