2016-07-20 6 views
0

Я создаю некоторые запросы для моего проекта, но я столкнуться с некоторыми трудностями с последующими из них:Query-Sql Developer

оператора SELECT заявление, содержащее подзапрос для получения списка местоположений (идентификатор местоположения и street_address), которые имеют работники с более высокой зарплатой, чем в среднем по своим отделам. Список должен содержать число этих сотрудников и их общую зарплату за место. Назовите эти агрегаты соответственно «emp» и «totalsalary». Расположение в списке должно быть упорядочено по адресу location_id.

Select LOCATION_ID, STREET_ADDRESS 
from HR.LOCATIONS IN 
(Select Employee_id 
from HR.Employees 
Where Salary > round(avg(SALARY))) 
order by location_id; 

error: SQL command not properly ended 

и второй запрос в следующей таблице

JOB_HISTORY может содержать несколько записей для сотрудника, который был нанят более чем один раз. Создайте запрос, чтобы получить список сотрудников, которые были наняты более одного раза. Включите столбцы EMPLOYEE_ID, LAST_NAME, FIRST_NAME и совокупность «Times Hired».

SELECT FIRST_NAME,LAST_NAME,EMPLOYEE_ID, 
count (*)as TIMES_HIRED 
from HR.JOB_HISTORY, HR.EMPLOYEES 
where EMPLOYEE_ID= LAST_NAME 
having COUNT(*) >1; 
error: not a single-group 

ответ

1

Попробуйте эти надежды, они помогут. Я делаю предположение, что таблица сотрудников имеет столбец Location_Id. Я добавляю Employee_id к Группе, чтобы убедиться, что вы получите правильный TotalSalary:

Select LOCATION_ID, STREET_ADDRESS, Count(Employee_id) AS emp, SUM(salary) AS totalsalary 
from HR.LOCATIONS INNER JOIN 
(Select Employee_id, salary 
from HR.Employees 
Having Salary > round(avg(SALARY), 0)) AS Emp ON HR.LOCATION_ID = Emp.Location_ID 
Group By LOCATION_ID, STREET_ADDRESS, Employee_id 
order by location_id; 

Для второго вопроса:

SELECT FIRST_NAME,LAST_NAME,EMPLOYEE_ID, 
count(Employee_id) as TIMES_HIRED 
from HR.JOB_HISTORY inner join HR.EMPLOYEES On JOB_HISTORY.Employee_id = Employees.Employee_id 
Group By FIRST_NAME,LAST_NAME,EMPLOYEE_ID 
Having count(Employee_id) >1; 
+0

На первой он дает мне ошибку: функциональная группа не имеет права здесь –

+0

В второй - он дает мне ошибку: «TIMES_HIRED»: неверный идентификатор –

+0

Для первого вместо того, где попробуйте: наличие зарплаты> round (avg (SALARY), 0) –