作者noguest (guest)
看板Database
标题Re: [SQL ] MySQL如何select出各系的前三高分?
时间Tue Sep 19 13:03:09 2006
※ 引述《grassboy2 (天才小胖子-草儿活力花俏)》之铭言:
: 内容/问题描述:
: 假设…我的table是如此安排
: 学号 科系 学期成绩
: -------------------------------------
: 924144 A 99
: 922110 B 96
: 924052 A 100
: :
: 那…有办法选出各系前三高分的同学吗?
: 之前爬文应该可以用MAX选出最高分…
: 不过前三高分就考倒我了><~
: 先谢谢高手的回答了><~
SELECT x.学号, x.科系, x.成绩
FROM tbl x
INNER JOIN tbl y ON x.成绩<=y.成绩 AND x.科系=y.科系
GROUP BY x.学号, x.科系, x.成绩
HAVING count(distinct y.成绩) <= 3
ORDER BY x.科系, x.成绩 desc;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 24.6.95.138
1F:推 lcloud:我试的结果 还是跑出全部的资料@@ 09/20 14:53
2F:推 noguest:能把你的 query 列出来吗? 我在 Oracle 上试没问题 09/21 10:35
3F:→ noguest:我猜可能是把 Having 的 "y.成绩" 打成 "x.成绩" 09/21 10:40
4F:→ noguest:另外要注意在 INNER JOIN, 是 "x.成绩<=y.成绩", 不是等於 09/21 10:44