[英]Query returning multiple errors in sql server 2008
Emp_id Emp_Name Dept_ID Dept_Name salary
1 a AA IT 2000 100
2 b AA IT 3000 200
3 c AA IT 4000 300
4 d BB HR 1000 400
5 e BB HR 2000 500
6 f BB HR 3000 600
7 g BB HR 4000 700
8 h CC FI 2500 800
9 i CC FI 3500 900
這是我的表結構。我想找出工資大於其組中平均工資的emp_id
和dept_id
。 我嘗試過SQL查詢,但顯示錯誤
select Emp_id
from dbo.Sheet1$
where Salary >= (select AVG(Salary) from dbo.Sheet1$ group by Dept_ID)
嘗試這個,
SELECT Emp_id
FROM dbo.Sheet1$ A
where A.Salary >= (SELECT AVG(B.Salary) FROM dbo.Sheet1$ B WHERE B.Dept_ID=A.Dept_ID)
也許是這樣的:
;WITH CTE
AS
(
SELECT
tbl.Emp_id,
AVG(salary) OVER(PARTITION BY tbl.Dept_ID) AS avgSalery
FROM
dbo.Sheet1$ AS tbl
)
SELECT
*
FROM
dbo.Sheet1$ AS tbl
JOIN CTE
ON CTE.Emp_id=tbl.Emp_id
AND tbl.salary>=CTE.avgSalery
沒有錯誤消息很難,但有一點我可以告訴你:你的第二個選擇,AVG被分組,所以它可以返回多個值,所以>不是一個有效的運算符。
select Emp_id,Dept_ID from (
select Emp_id, Emp_Name,
avg(salary) over (partition by dept_id) avg_sal
from yourtable
) a
where salary > avg_sal
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.