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;#對排序后的結果取第二高