Как выбрать из соединения таблиц уникальные значения?
Путем соединения таблиц HR.EMPLOYEES, HR.DEPARTMENTS и HR.LOCATIONS посчитать среднюю зарплату сотрудников, которые работают в разных странах. Попробовал сделать так:
select e.department_id, avg(salary) as avg_salary from hr.employees e
join hr.departments j on (e.department_id = j.department_id)
join hr.locations l on (j.location_id = l.location_id)
having unique(l.country_id)
Но это не сработало, как можно выбрать только разные страны? Вот примеры таблиц: hr.employees:
EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
100 Steven King SKING 515.123.4567 17-JUN-03 AD_PRES 24000 - - 90
hr.departments:
DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
10 Administration 200 1700
hr.locations:
LOCATION_ID STREET_ADDRESS POSTAL_CODE CITY STATE_PROVINCE COUNTRY_ID
1000 1297 Via Cola di Rie 00989 Roma - IT
UPD: Попробовал так:
select e.department_id, avg(salary) as avg_salary, l.country_id from hr.employees e, hr.locations l
join hr.departments j on (e.department_id = j.department_id)
join hr.locations l on (j.location_id = l.location_id)
group by l.country_id
Выводит ошибку: "E"."DEPARTMENT_ID": invalid identifier
Ответы (1 шт):
Автор решения: Егор Банин
→ Ссылка
Что насчёт group by? Вам же надо сгруппировать результат по странам. Ну и группируйте. id департамента вам не нужен, только country_id и avg(salary).