程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> sql server 查詢記錄平均值及並排序 的語句

sql server 查詢記錄平均值及並排序 的語句

編輯:關於SqlServer

SQL Server 查詢記錄平均值及並排序 的語句
查詢學生的平均成績並進行排名,sql 2000用子查詢完成,分平均成績重復時保留名次空缺和不保留名次空缺兩種。
select t1.* , px = (select count(1) from
(
select m.S# [學生編號] ,
m.Sname [學生姓名] ,
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# [學生編號] ,
m.Sname [學生姓名] ,
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# [學生編號] ,
m.Sname [學生姓名] ,
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# [學生編號] ,
m.Sname [學生姓名] ,
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

/*
數據表結構

--1.學生表
Student(S#,Sname,Sage,Ssex) --S# 學生編號,Sname 學生姓名,Sage 出生年月,Ssex 學生性別
--2.課程表
Course(C#,Cname,T#) --C# --課程編號,Cname 課程名稱,T# 教師編號
--3.教師表
Teacher(T#,Tname) --T# 教師編號,Tname 教師姓名
--4.成績表
SC(S#,C#,score) --S# 學生編號,C# 課程編號,score 分數

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved