【发布时间】:2016-03-03 12:57:44
【问题描述】:
考虑这些数据:
---+-----------+-------+--+
| id | name | grade | |
+----+-----------+-------+--+
| 13 | Maria | 10 | |
| 18 | Lorenzo | 10 | |
| 2 | Cissa | 10 | |
| 3 | Neto | 9 | |
| 15 | Gabriel | 9 | |
| 10 | Laura | 9 | |
| 12 | Joãozinho | 8 | |
| 16 | Sergio | 8 | |
| 8 | Adriele | 8 | |
| 6 | Jorgito | 8 | |
| 5 | Aline | 8 | |
| 1 | Cintia | 8 | |
| 19 | Fabiana | 7 | |
| 11 | Vinicius | 7 | |
| 9 | Tatiane | 7 | |
| 7 | Chico | 7 | |
| 4 | Marcos | 7 | |
| 14 | Pedro | 6 | |
| 17 | Mauricio | 6 | |
| 20 | Leonardo | 6 | |
+----+-----------+-------+--+
我需要三个成绩最高的学生。我想我需要按年级对数据进行分组,并限制在前 3 组。
“SELECT * FROM student GROUP BY Grade LIMIT 3”只给了我 3 行,这不是我想要的。
我尝试使用 HAVING 过滤组,但没有成功。我不想设置过滤器等级>MAX(等级)-2,因为理论上我不会知道等级。但是这个过滤器无论如何都不起作用。
我正在使用 MySQL。请帮忙!
【问题讨论】:
-
预期结果是什么? (使用指定的样本数据。)
-
所有10、9、8年级的学生。
标签: mysql sql select group-by limit