SqlServer--分組查詢和統計


以下是學習筆記:

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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM