MySQL每個人各科成績排名
『壹』 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'