我有一個雇員表,它看起來像這樣:
employee_name employee_salary
employee_id employee_name employee_salary
1 湯姆 35000
2 Sarah 50000
3 David 45000
4 Rosie 55000
5 邁克爾 45000
我需要回傳高于平均工資的員工工資,但是下面的命令出現了錯誤,說'1誤用了聚合函式AVG()'。
SELECT employee_salary
FROM Employees
WHERE employee_salary > AVG(employee_salary)。
我期望得到的輸出是:
我期望得到的輸出是:
employee_id employee_name employee_salary
2 Sarah 50000
4 Rosie 5500
請賜教,謝謝!
uj5u.com熱心網友回復:
我需要撰寫SQL查詢,以回傳每個部門的雇員人數。
我想你要找的是這樣的東西:
SELECT department_id
,COUNT(employee_id) AS TotalEmployees
FROM部門
LEFT JOIN Employees
ON Employees.department_id = Department.department_id
GROUP BY department_id
另外,我需要回傳高于平均工資的員工的工資
作為一個初級的sql程式員,回傳高于平均水平的工資的最簡單的方法可能是這樣的:
SELECT employee_salary FROM Employees WHERE employee_salary > (SELECT AVG(employee_salary) FROM Employees)正如其他人所說,其他問題只需要做一些研究。
uj5u.com熱心網友回復:
我需要撰寫SQL查詢,以回傳每個部門的雇員人數。 部門的員工人數。然而,我下面的命令并不正確:
這不是你所要求的。
你得到了正確的連接,但你要求的是:
你得到了正確的連接。
SELECT COUNT(Employees.employment_id)
計算不同就業ID的存在頻率--對于一個部門的員工來說是1,或者X,X是連接中的條目數。由于 department_id 條目是 employee 表的一部分,這不可能發生。這完全不是你想要的結果。
我在這里使用LEFT JOIN,因為我從Employees表中回傳結果,這對嗎? 雇員表的結果,這樣做對嗎?取決于 - 一個普通的連接在這里應該是有效的。只有在另一方為空的情況下,左鍵才是合理的--我認為這是不可能的(沒有 Employees.department_id 為 NULL 的記錄)。
你想要的是一個計數(沒有括號里的東西)和一個按部門ID分組。很明顯,部門ID:
SELECT Department.department_id, count() FROM....
此外,有什么技巧可以加快SQL Server的性能嗎?
只是向您指出https://use-the-index-luke.com/ - 索引是任何體面性能的基石。
考慮到你的第二個問題--請每個問題一個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/311095.html
標籤:
上一篇:篩選和執行多種計算
