SqlServer--分組查詢和統計
阿新 • • 發佈:2020-11-01
以下是學習筆記:
1,分組統計
2,分組後篩選統計
select 班級=StudentClass.ClassName,人數=COUNT(*),C#最高分=Max(CSharp),DB最高分=MAX(SQLServerDB), AVG(CSharp) as C#平均分,AVG(SQLServerDB) as DB平均分 from Students inner Join StudentClass on Students.ClassId =StudentClass.ClassId inner join ScoreList on ScoreList.StudentId=Students.StudentId group by ClassName --ClassName 按照班級的名稱分組 select 班級=StudentClass.ClassName,人數=COUNT(*),C#最高分=Max(CSharp),DB最高分=MAX(SQLServerDB), AVG(CSharp) as C#平均分,AVG(SQLServerDB) as DB平均分 from Students inner Join StudentClass on Students.ClassId =StudentClass.ClassId inner join ScoreList on ScoreList.StudentId=Students.StudentId group by ClassName --ClassName 按照班級的名稱分組 having AVG(CSharp)>=70 and AVG(SQLServerDB)>=70 --分組統計後不能有where條件篩選,要用having
3,重複資料問題
--在知道那個欄位重複的情況 select StudentId from ScoreList group by StudentId having COUNT(*)>1 --查詢所有重複的記錄 select * from ScoreList where StudentId in(select StudentId from ScoreList group by StudentId having COUNT(*)>1) order by StudentId --其他方法 select * from ScoreList where (select COUNT(*) from ScoreList s where s.StudentId=ScoreList.StudentId)>1 order by StudentId --過濾掉重複資料 select distinct StudentId,CSharp from ScoreList select distinct StudentId,CSharp,SQLServerDB from ScoreList