當前位置:首頁 » 編程語言 » sql查詢平均成績最高的前三個同學
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql查詢平均成績最高的前三個同學

發布時間: 2022-03-04 07:51:05

sql 顯示平均成績後三名的學生的學號和平均分

--取前3名
selecttop3*fromTABLEorderbyscoredesc;
--取後3名
selecttop3*fromTABLEorderbyscore;

⑵ 查詢每個同學所修課程的平均成績和最高成績,按降序排列輸出姓名、平均成績,最高成績, 用sql select

這里涉及到了兩張表,學生表tb_student 和 成績表 tb_score。不知道你要按照那個屬性來排序,所以就都寫上了,第一排序:姓名,第二排序:平均成績,第三排序:最高成績
select st.name,avg(score) avgScore,max(score) maxScore from tb_score sc right join tb_student st on st.id = sc.stu_id group by stu_id,st.name order by st.name,avg(score),max(score) desc;

⑶ sql查詢某個學生的平均成績的排名

1
2
3
4
5
6
7
8
9
10
11

select s.dname,s.sname,s.avggrade
from
(select t.dname,t.sname,t.avggrade,row_number() over (partition by t.dname order by t.avggrade desc) rn
from
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) t) s
where s.rn=1

包含並列的情況,如果一個學院有兩個第一,兩個人都顯示,以上為 sqlserver或oracle寫法,其他資料庫執行不了
-------------補充-----------
給你個通用的

select s2.*
from
(select t.dname,max(t.avggrade) avggrade
from
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) t
group by t.dname) s1,
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) s2
where s1.dname=s2.dname
and s1.avggrade=s2.avggrade

⑷ 用sql語句,查詢每個班級成績排名前三名的學生姓名

1、首先在打開的SQLServer中,假設有兩條數據中,包含有【張】,但是這個張一前一後,如下圖所示。

⑸ SQL語句:查詢各班成績前3的同學姓名

分析如下:

可以用row_number函數來解決。

1、創建測試表,插入數據:

(資料來源:網路:SQL語句)

⑹ SQL查詢單科成績最高的同學

SELECT child.abc,child.cource,a.name

FROM (select max(b.point) as abc,c.cource from `student` as a join `achievement` as b join `course` as c on a.sex = 1 and b.sid=a.id and b.cid=c.id group by c.cource) as child

join `student` as a join `achievement` as b join `course` as c on a.sex = 1 and b.sid=a.id and b.cid=c.id where child.abc=b.point and child.cource=c.cource

很繁瑣,子查詢和查詢的都是同一個表同一個條件,答案包對

不要姓名要學號的話就把名字換一下

原理

子查詢出最高分和科目,再用父查詢把(同條件下)把最高分和科目配對

⑺ 試寫一個SQL語句,查詢出各科成績最高分的同學(包括學生號,科目與成績)

select 學生號 ,科目 ,成績 max(成績)
from 要查的表
group by 科目
註: max(成績)是成績 的別名 我把成績當作最高成績來做了

⑻ 用SQL選出每個人成績的最高的前三條紀錄

--用開窗函數每個用戶成績排序
select*from
(selectt.*,row_number(partitionby用戶名orderby成績desc)asflagfrom表名t)
whereflag<=3

⑼ SQL 怎樣查詢 單科成績排名第3名的學生

寫個笨點的方法,
SELECT * INTO #TempA FROM score ORDER BY degree DESC
SELECT TOP 1 * FROM #TempA WHERE degree NOT IN(SELECT TOP 2 degree FROM #TempA )

⑽ 用sql查詢最高平均成績的學生學號 應該怎麼寫

就是一下思路,第一條就是最高的,最後一條就是最低的,COUNT(1),就是統計學生的成績次數
select * from
(select sum(學生成績)/count(1) as 平均成績,學生學號 from 學生成績表
group by 學生學號) order by 平均成績 DESC