当前位置:首页 » 成绩查询 » MySQL每个人各科成绩排名

MySQL每个人各科成绩排名

发布时间: 2021-01-25 08:26:24

『壹』 mysql查询如何实现每个人每科成绩的排名

MYSQL如果强行来实现,查询逻辑会变的很自复杂,不符合实际

计算最好是在PHP里面

$data..//比如查询结果返回给DATA的二维数组
foreach($dataas$vo){
$math[$vo['name']]=$vo['数学'];
$langue[$vo['name']]=$vo['语文'];
$englist[$vo['name']]=$vo['英语'];
}
arsort($math);
arsort($langue);
arsort($englist);
$i=1;
foreach($mathas$key=>$vo){
$res[$key]['数学']=$i;
}

$i=1;
foreach($langueas$key=>$vo){
$res[$key]['语文']=$i;
}

$i=1;
foreach($englistas$key=>$vo){
$res[$key]['英语']=$i;
}

『贰』 mysql查询我在各科考试中的名次

select s.id,s.name,s.score,s.kemu,
(select count(1) + 1 from score sc
where sc.kemu = s.kemu
and sc.score > s.score) as mingci /*分数相同,名次版并列权*/
from score s
where 1 = 1
/*
and s.name = 'uOXd'
and s.kemu in ('R','L','W','S')
*/
order by s.name

『叁』 大神进:MYSQL各科成绩前三名

select * from
(select Student.S#,Sname,Sage,Ssex,SC.C#,score,Cname
from SC inner join Student on SC.S#=Student.S#
inner join Course on Course.C#=SC.C#) as t
where exists(
select count(1) from t as d
where C#=d.C# and score < d.score
having count(1)<3
)

『肆』 Mysql 中按成绩降序排名 取名次。 每个人的名次都要有

SELECT B.NAME,
B.SCORES,
(SELECT COUNT(1) + 1
FROM 分数表专属 A
WHERE A.SCORES > B.SCORES) PM
FROM 分数表 B
ORDER BY PM;

『伍』 MySQL查询语句:一个成绩排名榜,取出每个人的最好成绩排序,可能需要限定条数

嵌套查询 SELECT id,uid,reg,abcc from (select id,uid,reg,abcc from testcx ORDER BY reg desc) as v GROUP BY uid ORDER BY reg desc

『陆』 mysql中一张学生表,查询出单科成绩前十名学生的所有信息 和总分成绩前十名学生的所有信息 在线等

学生表名为:student, 单科成绩的字段为:subject。学生名字为:name

查询单科成绩前十:mysql语句为:select * from student order by subject desc limit 10;

查询总分成绩前十:mysql语句为:select sum(subject) subject,name from student group by name order by subject desc limit 10;

注:

select sum(subject) subject,name

这句的意思是:sum(subject) subject 把单科成绩加总用subject 来命名(就是总成绩),name就是一个字段,这里只有两个字段。

group by name order by subject : group by name 的意思按照名字这一栏来分组,当然,学生成绩表名字有可能是一样的,按照学号是最准确的,这里只是举个例子。

order by subject 这句的意思是按照总分成绩排序,这里的subject 是前面重命名总分的意思。

select sum(subject) as countsubject,name from student group by name order by countsubject desc limit 10;

(6)MySQL每个人各科成绩排名扩展阅读:

学生成绩表常用sql

1. 在表中插入符合主键

[sql]

/*成绩表*/

CREATE TABLE SC

(

Sid INT REFERENCES Student(Sid), /*学生学号*/

Cid INT REFERENCES Course(Cid), /*课程编号*/

Score INT NOT NULL, /*课程分数*/

PRIMARY KEY(Sid,Cid) /*将学生学号和课程编号设为复合主键*/
)

2. 查询各科成绩最高分,最低分以及平均分

[sql]

SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average

FROM Course c JOIN SC s ON c.Cid = s.Cid

GROUP BY c.Cname

/*此处应注意,若不按照c.Cname进行分组,SQL语句会报错,c.Cname在SELECT语句中不合法,因为它并未出现在聚合函数中也没有出现在GROUP BY语句中*/


3. 查询平均成绩大于80分的学生姓名以及平均成绩

[sql]

SELECT Sname, AVG(Score) AS Average FROM Student JOIN SC

ON Student.Sid=SC.Sid

GROUP BY Sname

HAVING AVG(Score)>80

/*以聚合函数为条件进行删选只能在HAVING语句中进行,WHERE语句不支持聚合函数*/

4.按总分为学生排名,总分相同名次相同

[sql]

SELECT RANK() OVER (ORDER BY SUM(ss.Score) DESC) AS Rank, s.Sname,

ISNULL(SUM(ss.Score),0)

FROM Student s LEFT JOIN SC ss

ON s.Sid = ss.Sid

GROUP BY s.Sname

ORDER BY SUM(ss.Score) DESC

/*RANK()是SQL Server的一个built-in函数,语法为

RANK() OVER ( [ partition_by_clause ] order_by_clause ).*/

5. 查询总分在100至200之间的学生姓名及总分

[sql]

SELECT s.Sname,SUM(ss.Score) FROM Student s JOIN SC ss ON s.Sid=ss.Sid

GROUP BY s.Sname HAVING SUM(ss.Score) BETWEEN 100 AND 200

『柒』 mysql 查询每门成绩的前十名

mysql 查询每门成绩的前十回名答
create table sc
(sno int,
cno int,
score);

insert into sc values (1,1,100);
insert into sc values (2,1,80);
insert into sc values (3,1,25);
insert into sc values (4,1,45);
insert into sc values (5,1,67);
insert into sc values (1,2,25);
insert into sc values (2,2,77);
insert into sc values (3,2,78);
insert into sc values (4,2,69);
insert into sc values (5,2,24);

『捌』 mysql中有student,course,scorse 三张表, 计算每个人单科的最高成绩(学生,课程,成绩)

获取每一来个科目最高分的学生源
select sid,cid,max(score) from score group by cid;
然后分别和学生表、课程表联合查询取出科目名字和学生名字就ok了

写成单条sql:
select * from (select s.sid,s.realname,a.cid,a.mscore from student as s right join (select sid,cid,max(score) as mscore from score group by cid)as a on a.sid = s.sid) as a1 left join ((select c.coursename,c.cid from course as c right join (select sid,cid as mscore from score group by cid)as a on a.cid = c.cid) ) as b1 on a1.cid = b1.cid;

『玖』 怎样统计SQL数据库里面每一个学生的各科成绩的总分

。。有哪些表,哪些字段啊
select 学号,课1+课2+课3+课4+课5 as 总成绩 from 成绩表
这种一张表的?

『拾』 按照人名查出学生的各科成绩以及总成绩并按总成绩排名的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实现按总成绩倒叙排列。


(10)MySQL每个人各科成绩排名扩展阅读

上述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'

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919