分组取前N条的SQL语句!!!
2006-05-11 13:25
288 查看
表结构:
学生ID 班级 语文成绩
1 1 21
2 1 1
3 1 3
4 1 324
5 1 54
6 1 54
7 1 47
8 1 45
9 1 32
10 1 323
11 1 23
12 1 5
13 1 345
14 2 34
15 2 5
16 2 44563
17 2 345
18 2 234
19 2 234
20 2 345
21 2 12
22 2 12
23 2 31
24 2 534
25 2 67
26 2 567
27 2 856
28 2 732
29 2 23
30 3 32
31 3 46
32 3 45
33 3 234
34 3 7
35 3 567
36 3 3
37 3 634
38 3 64
39 3 2
40 3 23
41 3 23
42 3 523
43 3 4
44 3 3
45 3 5324
查询结果:
学生ID 班级 语文成绩
4 1 324
13 1 345
16 2 44563
27 2 856
37 3 634
45 3 5324
要求:取出所有班级前2名的记录:
select *
from 表 as a
where 语文成绩 in(select top 2 语文成绩 from 表 where 班级=a.班级 order by 语文成绩 desc)
学生ID 班级 语文成绩
1 1 21
2 1 1
3 1 3
4 1 324
5 1 54
6 1 54
7 1 47
8 1 45
9 1 32
10 1 323
11 1 23
12 1 5
13 1 345
14 2 34
15 2 5
16 2 44563
17 2 345
18 2 234
19 2 234
20 2 345
21 2 12
22 2 12
23 2 31
24 2 534
25 2 67
26 2 567
27 2 856
28 2 732
29 2 23
30 3 32
31 3 46
32 3 45
33 3 234
34 3 7
35 3 567
36 3 3
37 3 634
38 3 64
39 3 2
40 3 23
41 3 23
42 3 523
43 3 4
44 3 3
45 3 5324
查询结果:
学生ID 班级 语文成绩
4 1 324
13 1 345
16 2 44563
27 2 856
37 3 634
45 3 5324
要求:取出所有班级前2名的记录:
select *
from 表 as a
where 语文成绩 in(select top 2 语文成绩 from 表 where 班级=a.班级 order by 语文成绩 desc)
相关文章推荐
- oracle中,分组后,取各组的前n条记录的sql语句:rownumber() over()
- Sql语句中的分组
- 分组字符合并SQL语句 按某字段合并字符串之一(简单合并)
- 字段中 字符串有条件连接 并分组显示,排序 用sql语句
- SQL语句查询年龄分段分组查询
- 按周分组查询的SQL语句
- SQL 先Group by 分组后 left join 语句
- SQL学习之查询技巧 查询第3的数据 用一条语句分组,排序 并查询某一排名
- 分组查询SQL语句
- sql查询语句,求每个分组中的最大值实例
- SQL语句聚合函数、分组、子查询及组合查询
- SQL语句,聚集函和数据分组,接上文
- [MS SQL]SQL语句查询每个分组的前N条记录的实现方法
- 使用SQL语句实现分组的第一天
- sql语句按月份进行汇总分组
- MySQL取第一条数据方法:SQL语句分组的方法,使用Northwind 数据库为例子。
- 用一条SQL语句查询分组前三名数据
- 学习 SQL 语句 - Select(8): 分组条件
- 分组后显示前N条记录(SQL语句)
- sq更新语句条件子查询中有分组统计的sql,导致错误1093