2016-07-09 2 views
0

Я хочу, чтобы преобразовать подзапрос в Join, следующий подзапросомКак использовать групповую функцию в самостоятельном соединении?

SELECT employee_id, last_name, salary 
FROM employees 
WHERE salary > (SELECT AVG(salary) 
FROM employees); 

Я написал следующий присоединиться, но я получаю «ORA-00934: функциональная группа не имеет право здесь» ошибка

SELECT e.employee_id, 
    e.last_name, 
    e.salary 
FROM employees e 
INNER JOIN employees average 
ON(e.salary>AVG(average.salary)); 
+1

Пожалуйста, объясните, какой результат вы хотите получить, используя это соединение. Пока вы подбросили нам подзапрос и другой запрос, который неверен - трудно угадать, глядя на неправильный код, каковы ваши намерения. – krokodilko

ответ

0

Вы можете использовать это как

SELECT e.employee_id, 
    e.last_name, 
    e.salary 
FROM employees e 
INNER JOIN (select AVG(salary) salary from employees) average 
ON (e.salary > average.salary) 
Group by e.employee_id; 
+1

Он не может использовать это, так как он не будет компилироваться. e.last_name и e.salary не являются групповыми выражениями. Почему вам все равно нужно группировать e.employee_id? – mathguy