当前位置:首页 » 编程语言 » 成绩排名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'