0

テーブル 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 句を配置する方法がわかりません。

4

1 に答える 1