私はSQLへのイントロを行っていますが、現在私はこの練習をしていますが、私は立ち往生しています。部門ごとの平均給与
演習:
部署名、管理者ID、その部門のマネージャ名(従業員姓)、および各部門の平均給与のリストを作成します。
以下は、私が使っているテーブルだけです。これは私が今持っているものである
はCREATE TABLE "EMPLOYEES"
("EMPLOYEE_ID" NUMBER(6,0),
"FIRST_NAME" VARCHAR2(20),
"LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE,
"EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE,
"PHONE_NUMBER" VARCHAR2(20),
"HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE,
"JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE,
"SALARY" NUMBER(8,2),
"COMMISSION_PCT" NUMBER(2,2),
"MANAGER_ID" NUMBER(6,0),
"DEPARTMENT_ID" NUMBER(4,0),
"BONUS" VARCHAR2(5),
CONSTRAINT "EMP_SALARY_MIN" CHECK (salary > 0) ENABLE,
CONSTRAINT "EMP_ID_PK" PRIMARY KEY ("EMPLOYEE_ID")
USING INDEX ENABLE,
CONSTRAINT "EMP_EMAIL_UK" UNIQUE ("EMAIL")
USING INDEX ENABLE
);
CREATE TABLE "DEPARTMENTS"
("DEPARTMENT_ID" NUMBER(4,0),
"DEPARTMENT_NAME" VARCHAR2(30) CONSTRAINT "DEPT_NAME_NN" NOT NULL ENABLE,
"MANAGER_ID" NUMBER(6,0),
"LOCATION_ID" NUMBER(4,0),
CONSTRAINT "DEPT_ID_PK" PRIMARY KEY ("DEPARTMENT_ID")
USING INDEX ENABLE
);
、
select d.department_name, d.manager_id,e.last_name as "manager_name" ,
avg(salary)
from departments d join employees e ON (e.employee_id=d.manager_id)
group by d.department_name,e.last_name, d.manager_id;
私はそれが平均を除くために尋ねたすべてのフィールドを生成することができた、私は別のクエリ
を行うことで答えを手に入れましたselect department_name, round(avg(salary)) from employees e join
departments d ON (e.department_id=d.department_id)
group by department_name;
私は平均給与を与える選択声明が働くようにする方法を私の人生のために把握することはできません、私はHAVING句を試してみました。 en。うまくいけば誰かが私に何が欠けているか説明することができます。返事を感謝します!
あなたはどのようなデータベース・サーバを使用していますか? –
Oracle SQLデータベース – Rafa579