當前位置:首頁 » 編程語言 » sql語句分組查詢報錯
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql語句分組查詢報錯

發布時間: 2022-08-25 08:10:19

sql 語句問題 分組查詢

SELECT 部門 as '部門名稱',count(姓名) as '人數',sum(isnull(工資,0)) as '工資總額
(select sum(isnull(工資,0)) from 工資表 where 部門=a.部門 and 職務='管理人員' and 工資年月='200908' and 工資 > 0) as 管理人員(select sum(isnull(工資,0)) from 工資表 where 部門=a.部門 and 職務='工人' and 工資年月='200908' and 工資 > 0) as 工人
FROM 工資表 as a where 工資年月='200908' and 工資 > 0group by 部門order by 部門

② SQL的GROUP BY錯誤

錯誤提示的意思是group部分定義條件過深.事實上在使用having條件時,一定要注意的是不要過多的使用聚合函數的.因為每一個聚合函數的計算都是非常大的,所以這里的錯誤就是你使用了過多的聚合函數的原因.

在SQL中存在一個叫子語句嵌套的.如:select * from A wrhere A.p in(select * from B where B.p in (select.........))看似這個條件可能無限的寫下去,事實上由於這種查詢非常的耗時的,所以在SQL中規定是子嵌套不能超出三層.其一般情況下我們採用的都其的處理方式的,避免使用這種子查詢嵌套的,如果不得已才使用一個嵌套.因為這種查詢太耗內存的!所以我們都是不建議使用的!

而聚合函數根其十分類似,因為其對所以結果進行一個分篩統計,也是非常耗時的,不建議使用聚合函數的嵌套的!所以這里必須要考慮這個的問題的!

對於你的問題,我可能理解的不太透徹,但我不明白的是為什麼你非要條件壓到having上呢?你有沒有考慮過top 1這一個參數的使用呢?

Select top 1 sum(Admin_EnyEred) as maxenyered from state
group by year_entered
order by maxenyered Desc
這種條件中我連having條件都不再使用的!
使用多重聚合時我也不知道SQL是否讓通過,你可以試一下的,但我想應該是有一定的問題的,至少效率也不行!
Select max(sum(Admin_EnyEred)) as maxenyered from state
group by year_entered
從你自己的語句中我看你可能是對having條件不太理解造成的,事實上having條件與where是不同的,很多時間也是無法轉化的。只有部分條件是可以轉化的,having又稱分組依據,也就是分組前對分組進行一個「過濾」篩選的,而不是where條件的對結果集前後都可以篩選的,所以這樣的having條件從你的使用上來說根本就是不對的!

③ sql 查詢語句出錯,各位幫忙看看

既然用了group by(typeid ),那麼前面select出來的就只可以是typeid 以及像sum(typeid )這些關於typeid 的統計函數。
你這個可以這么寫。
SELECT id, title, typeid, addtime
from news a,
(SELECT typeid
FROM news
WHERE typeid
IN ( 1, 2, 8, 23, 10, 22, 24, 25, 11, 21 )
GROUP BY typeid)b
where a.typeid = b.typeid
ORDER BY a.addtime DESC

④ 一個分組查詢的SQL問題

select dataGrpcount(0),cntSum,sum(dataSign=0)cntSign0,sum(dataSign=1)cntSign1,sum(dataSign=2)cntSign2

⑤ SQL分組查詢問題

select t1.branch_no, t1.cnt, t2.usercode, count(t2.usercode)
from (select branch_no, count(1) as cnt from table2 group by branch_no) t1
LEFT JOIN table2 t2 on t1.branch_no = t2.branch_no and t2.usercode is not null
group by t1.branch_no, t1.cnt, t2.usercode
order by t1.branch_no, t1.cnt, count(t2.usercode) desc

-------testing
BRANCH_NO CNT USERCODE COUNT
001 4 zhang san 2
001 4 li si 1
002 1 wang wu 1

⑥ sql 分組查詢問題,

分組,使用Case When 語句將特定數據橫向展開,具體語句如下

Select street,
1號點=Max(Case When Name='1號點' Then 經緯度 Else null End),
2號點=Max(Case When Name='2號點' Then 經緯度 Else null End),
3號點=Max(Case When Name='3號點' Then 經緯度 Else null End),
4號點=Max(Case When Name='4號點' Then 經緯度 Else null End),
5號點=Max(Case When Name='5號點' Then 經緯度 Else null End)
From yourTable Group By street