sql server 分组,取每组的前几行数据
来源:互联网 发布:linux lnmp安装目录 编辑:程序博客网 时间:2024/05/29 03:19
sql中group by后,获取每组中的前N行数据,目前我知道的有2种方法
比如有个成绩表: 里面有字段学生ID,科目,成绩。我现在想取每个科目的头三名。
1. 子查询
select * from score s where StudentName in (
select top 3 StudentName from score where s.Subjects = Subjects
group by Subjects,StudentName,Score order by Score desc)
group by Subjects,StudentName,Score order by Subjects,Score desc
2. 用rowNumber函数
select Subjects,StudentName,Score from
(select *,
ROW_NUMBER() over(partition by subjects order by score desc) rowNum
from Score) as s where s.rowNum <= 3
group by Subjects,StudentName,Score order by Subjects,Score desc
以上的2种结果都是一样的。如果还有其他的方法,以后补充
表和表的数据
Create table Score(StudentName char(10),Subjects char(20), Score float)
insert into Score values('小明','语文',90),
('小明','数学',80),
('小明','英语',60),
('小红','语文',93),
('小红','数学',92),
('小红','英语',91),
('小花','语文',50),
('小花','数学',30),
('小花','英语',70),
('小草','语文',95),
('小草','数学',86),
('小草','英语',62),
('小刚','语文',78),
('小刚','数学',68),
('小刚','英语',76),
('小柔','语文',56),
('小柔','数学',86),
('小柔','英语',88),
('小陈','语文',77),
('小陈','数学',88),
('小陈','英语',99)
- sql server 分组,取每组的前几行数据
- sql取每组前N行数据
- sql 分组取每组的前n条或每组的n%(百分之n)的数据
- 关于SQL Server分组取前N条的问题
- oracle 分组后取每组中固定行数
- 求每分组取前3条纪录的sql语句
- SQL分组取每组前一(或几)条记录(排名)
- SQL分组取每组前一(或几)条记录(排名)
- SQL分组取每组前一(或几)条记录(排名)
- SQL分组取每组前一(或几)条记录(排名)
- SQL分组取每组前一(或几)条记录(排名)
- 分组查询取每组前n条记录实例
- MySQL 查询分页数据中分组后取每组的前N条记录
- MySQL 查询分页数据中分组后取每组的前N条记录
- Oracle分组查询取每组排序后的前N条记录
- MySql 按某一字段分组,同时取每组的前三行数据
- 分组取每组最大的值
- sql分组查询每组的最大值
- c++实验6-数组操作
- C++模板
- HttpClient使用HttpGet获取Json数据出现部分数据乱码的情况
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
- uva 10815 Andy's First Dictionary
- sql server 分组,取每组的前几行数据
- Oracle的update语句优化研究 批量更新
- char *a和 char a[]
- Eclipse导出JAR包【java】
- NYOJ 954 N! (数学)
- 习题 8-18 UVA - 1619 Feel Good 感觉不错 (容斥定理)
- CNN公式推导
- MySQL入门——数据表的修改1:往指定表中添加单列(字段)
- VMWare克隆或复制没有IP