當前位置:首頁 » 編程語言 » 成績排名sql大量數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

成績排名sql大量數據

發布時間: 2022-12-16 23:39:26

1. 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

2. 按照人名查出學生的各科成績以及總成績並按總成績排名的sql語句

按照人名查出學生的各科成績以及總成績並按總成績排名的sql語句示例如下:

selectA.name ,

(selectB.scorefromtable_scoreBwhereB.type='數學'andA.id=B.id) as數學 ,

(selectB.scorefromtable_scoreBwhereB.type='語文'andA.id=B.id) as語文,

(selectB.scorefromtable_scoreBwhereB.type='英語'andA.id=B.id)as英語,

(selectSUM(B.score)fromtable_scoreBwhereA.id=B.id)assum_score

fromtable_studentAorderbysum_scoreDESC

以上sql語句首先把學生表和成績表聯合查出每個學生的數學、語文、英語成績,然後通過selectSUM(B.score)fromtable_scoreBwhereA.id=B.id查出每個學生的總成績。

最後orderbysum_scoreDESC實現按總成績倒敘排列。


(2)成績排名sql大量數據擴展閱讀

上述sql語句重點是對as關鍵字的使用- Alias(別名),通過使用 SQL,可以為列名稱和表名稱指定別名(Alias)。

表的 SQL Alias 語法

SELECT column_name(s) FROM table_name AS alias_name;

列的 SQL Alias 語法

SELECT column_name AS alias_name FROM table_name;

Alias 實例: 使用表名稱別名

假設我們有兩個表分別是:"Persons" 和 "Proct_Orders"。我們分別為它們指定別名 "p" 和 "po"。

現在,我們希望列出 "John Adams" 的所有定單。

我們可以使用下面的 SELECT 語句:

SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Proct_Orders AS poWHERE p.LastName='Adams' AND p.FirstName='John'