2016-07-20 13 views
0

私は私のプロジェクトのためにいくつかのクエリを作成していますが、私は従うものといくつかの困難に直面している:クエリ-SQL開発

持っている場所(位置IDとにstreet_address)のリストを取得するために、サブクエリを含むSELECTステートメント彼らの部門の平均よりも高い給与を持つ従業員。リストには、従業員数と各地域の給与合計が含まれていなければなりません。これらの集計にはそれぞれ「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 

と2番目のクエリは、次の

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列があることを前提としています。それは私にエラーを与える

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

最初の1時:グループ機能は、ATここ –

+0

許可されていない2番目の質問については

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; 

:私はあなたが正しいTotalSalaryを得ることを確認することにより、グループにEmployee_idを追加してい"TIMES_HIRED":無効な識別子 –

+0

試行:給料>ラウンド(平均(SALARY)、0) –