一個簡單的學生總成績第二的 sql查詢


 

CREATE TABLE stucores(
 id INT,/*學生id*/
 NAME VARCHAR(11),/*學生姓名*/
 course VARCHAR(11),/*課程名稱*/
 score INT,/*單科分數*/
 PRIMARY KEY(id,course)
)
INSERT INTO stucores(id,NAME,course,score) VALUES(1,'張三','語文',23);
INSERT INTO stucores(id,NAME,course,score) VALUES(1,'張三','數學',25);
INSERT INTO stucores(id,NAME,course,score) VALUES(2,'李四','語文',43);
INSERT INTO stucores(id,NAME,course,score) VALUES(2,'李四','數學',67);
INSERT INTO stucores(id,NAME,course,score) VALUES(3,'王五','語文',89);
INSERT INTO stucores(id,NAME,course,score) VALUES(3,'王五','數學',28);
INSERT INTO stucores(id,NAME,course,score) VALUES(4,'趙六','語文',35);
INSERT INTO stucores(id,NAME,course,score) VALUES(4,'趙六','數學',78);
INSERT INTO stucores(id,NAME,course,score) VALUES(5,'錢七','語文',89);
INSERT INTO stucores(id,NAME,course,score) VALUES(5,'錢七','數學',97);

SELECT id,NAME,SUM(score) '總成績' FROM stucores GROUP BY id;#分組求每組的總成績

SELECT id,NAME,SUM(score) '總成績' FROM stucores GROUP BY id ORDER BY '總成績' DESC;#這樣排序無效

SELECT id,NAME,SUM(score) '總成績' FROM stucores GROUP BY id ORDER BY '總成績' DESC LIMIT 1,1;#取出來的第二高也是錯的

 SELECT t.id,t.name,t.s '總成績'  FROM

  (SELECT id,NAME,SUM(score) s FROM stucores GROUP BY id) t

ORDER BY t.s DESC;#對分組后的數據重新select 然后排序才有效

 SELECT t.id,t.name,t.s '總成績'  FROM

  (SELECT id,NAME,SUM(score) s FROM stucores GROUP BY id) t

ORDER BY t.s DESC LIMIT 1,1;#對排序后的結果取第二高

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM