sql 用Group by分组后,取每组的前几条记录
(2010-11-25 14:22:40)
标签:
杂谈 |
分类: 技术 |
--查询每门课程的前2名成绩
CREATE TABLE StudentGrade(
stuId
CHAR(4),
subId
INT,
grade
INT,
PRIMARY KEY (stuId,subId)
)
GO
--表中数据如下
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('001',1,97);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('001',2,50);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('001',3,70);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('002',1,92);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('002',2,80);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('002',3,30);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('003',1,93);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('003',2,95);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('003',3,85);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('004',1,73);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('004',2,78);
INSERT INTO StudentGrade(stuId,subId,grade)
VALUES('004',3,87);
GO
/*
--查看数据
select * from StudentGrade
--查询结果
001
001
002
002
003
003
004
004
SQL语句:
Select * From StudentGrade A
Where (Select Count(*) From StudentGrade
Order By stuid, grade