sql server查詢平均值的實(shí)現(xiàn)
sql server查詢平均值的方法很多人都提到過,下面就為您詳細(xì)介紹sql server查詢平均值的實(shí)現(xiàn)過程,希望對您能夠有所幫助。
sql server查詢平均值及并排序的語句:
查詢學(xué)生的平均成績并進(jìn)行排名,sql用子查詢完成,分平均成績重復(fù)時(shí)保留名次空缺和不保留名次空缺兩種。
- select t1.* , px = (select count(1) from
- (
- select m.S# [學(xué)生編號] ,
- m.Sname [學(xué)生姓名] ,
- isnull(cast(avg(score) as decimal(18,2)),0) [平均成績]
- from Student m left join SC n on m.S# = n.S#
- group by m.S# , m.Sname
- ) t2 where 平均成績 > t1.平均成績) + 1 from
- (
- select m.S# [學(xué)生編號] ,
- m.Sname [學(xué)生姓名] ,
- isnull(cast(avg(score) as decimal(18,2)),0) [平均成績]
- from Student m left join SC n on m.S# = n.S#
- group by m.S# , m.Sname
- ) t1
- order by px
- select t1.* , px = (select count(distinct 平均成績) from
- (
- select m.S# [學(xué)生編號] ,
- m.Sname [學(xué)生姓名] ,
- isnull(cast(avg(score) as decimal(18,2)),0) [平均成績]
- from Student m left join SC n on m.S# = n.S#
- group by m.S# , m.Sname
- ) t2 where 平均成績 >= t1.平均成績) from
- (
- select m.S# [學(xué)生編號] ,
- m.Sname [學(xué)生姓名] ,
- isnull(cast(avg(score) as decimal(18,2)),0) [平均成績]
- from Student m left join SC n on m.S# = n.S#
- group by m.S# , m.Sname
- ) t1
- order by px
- /*
數(shù)據(jù)表結(jié)構(gòu)
--1.學(xué)生表
Student(S#,Sname,Sage,Ssex) --S# 學(xué)生編號,Sname 學(xué)生姓名,Sage 出生年月,Ssex 學(xué)生性別
--2.課程表
Course(C#,Cname,T#) --C# --課程編號,Cname 課程名稱,T# 教師編號
--3.教師表
Teacher(T#,Tname) --T# 教師編號,Tname 教師姓名
--4.成績表
SC(S#,C#,score) --S# 學(xué)生編號,C# 課程編號,score 分?jǐn)?shù)
【編輯推薦】