возвратных один рядом для каждого JOB_ID со следующими столбцами:SQL Oracle запрос для сравнения мужского и женских зарплаты для каждой должности в компании
• J об-ID
• Средней женщины длина службы в этой работе в годах округлена до десятых года
• Средней зарплаты Женской для этой работы
• Средняя мужской службы длина в этой работе в годы округляется до десятых года
• Средняя оценка Мужской Зарплата для этой работы
• Разница в среднем мужских и женских зарплат для этой работы, так что положительное число означает, что средняя зарплата женщин выше, а отрицательное число означает, что средняя заработная плата мужчин выше.
ТАБЛИЦЫ
HR.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)
GENDER CHAR(1)
Что я так далеко, но это возвращающая M & F строку для каждого job_id мне нужно M & F столбцы
SELECT gender, job_id, ROUND(AVG(salary),0) as avg_job_salary,
(SELECT ROUND(AVG(salary),0)
FROM hr.employees
WHERE gender = 'M') AS avg_m_salary, (SELECT ROUND(AVG(salary),0)
FROM hr.employees
WHERE gender = 'F') AS avg_f_salary,
ROUND(AVG(days_of_svc/365),1) AS avg_years_svc
FROM (SELECT job_id, salary, gender, (SYSDATE-hire_date) AS days_of_svc
FROM hr.employees)
GROUP BY job_id,gender
ORDER BY job_id, gender;
или версия 2
SELECT gender, job_id, ROUND(AVG(salary),0) as avg_job_salary,
((SELECT ROUND(AVG(salary),0)
FROM hr.employees
WHERE gender = 'F') - (SELECT ROUND(AVG(salary),0)
FROM hr.employees
WHERE gender = 'M')) as diff,
ROUND(AVG(days_of_svc/365),1) AS avg_years_svc
FROM (SELECT job_id, salary, gender, (SYSDATE-hire_date) AS days_of_svc
FROM hr.employees)
GROUP BY job_id,gender
ORDER BY job_id, gender;
образца ожидаемых результатов строки
JOB_ID F_AVG_LENGTH F_AVG_SAL M_AVG_LENGTH M_AVG_SAL DIFFERENCE
------ ------------ --------- ------------ --------- ----------
MAILCLERK 24.1 48000 23.4 47000 1000
CASHIER 4.6 12000 4.4 13500 -1500
ли ваша копия HR.EMPLOYEES есть столбец для пола? Мой нет. (У него также нет JOB_ID MAILCLERK). – mathguy
i jsut составил MAIL CLERK для строки выборки и да GENDER рассматривается выше как последний столбец, представленный 1 CHAR M или F –
И вы имеете в виду стандартную схему HR, которая поставляется с базой данных? Причина, по которой я не верю, состоит в том, что у меня есть две разные установки Oracle, и у меня нет колонки GENDER в таблице EMPLOYEES. Подтверждено документацией - см. Начало страницы 4.2. https://docs.oracle.com/cd/E11882_01/server.112/e10831.pdf – mathguy