sql 怎么先分组再查询每组中前三天数据?

字段:StudentName , Score , Class 分别为学生姓名,分数,班级 要求查询出每个班级成绩前三的3个人最后按班级排序显示出数据。

SELECT TEST1.STUDENTNAME, TEST1.SCORE, TEST1.CLASS
FROM (SELECT STUDENTNAME,
SCORE,
CLASS,
ROW_NUMBER() OVER(PARTITION BY CLASS ORDER BY CLASS, SCORE DESC) ROW_NUM
FROM TABLE_NAME) TEST1
WHERE TEST1.ROW_NUM <= 3
ORDER BY TEST1.CLASS, TEST1.STUDENTNAME
看看是不是你要的,这用到了分组排序编号
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-24
有一种比较中规中矩的办法:

先把班级列表插入一张临时表:
select distinct(Class) from table into #abc

用游标循环这张临时表,把每个班级成绩前三的人取出来,插入另外一张临时表:
insert into #result select top 3 * from table where class = @class order by Score desc

最后把#result表select出来

看楼下有没有更简便的办法,可以不用游标
第2个回答  2014-10-24
mark ,同学习

sql 分组排序
在上述查询中,我们首先使用JOIN操作将table1和table2连接起来,以确保商品信息的一致性。然后,我们使用窗口函数rank(),在每个商品名称(name)的分组内,根据价格(price)进行降序排序,并为每行分配一个排名(rk)。接下来,我们需要从分组后的结果中选择排名前三的商品。为了实现这一点,我们将使用...

sql 分组查询 分组查询查询每组的前几条数据
sqlserver:select * from (select *,row_number() over(partition by 分组列 order by 组内排序列) as rn from table ) as a where rn<=2

sql 分组取每组的前几条数据 怎么做
(select a,a1,a2 from 表名 group by a,a2) b where a.a=b.a and a.a2=b.a2)

怎么知道sql语句的执行顺序?
首先,执行`From`和`Join`操作,获取表的笛卡尔积。可以通过运行`select * from citizen cross join city`得到笛卡尔积。接着,通过`On`过滤出符合条件的数据。然后,执行`Where`语句进行数据过滤。紧接着,通过`Group by`对数据进行分组。拥有相同`city_id`的数据被分在同一组。此时,`Select`语句的...

如何用SQL批量查询最近几天的数据?
select*,max(create_time)froma wherecreate_time<="2017-03-2919:30:36"groupbyuser_id 这句可以理解为将结果集根据user_id分组,每组取time最大一条记录。这样就很好的实现了批量查询最近记录,并且仅仅需要遍历一次表,即使在数据量巨大的情况下也可以在很短的时间查出结果。

用sql语句,查询每个班级成绩排名前三名的学生姓名
1、首先在打开的SQL Server中,假设有两条数据中,包含有【张】,但是这个张一前一后,如下图所示。2、此时就能利用Select和From语句,查询数据,如下图所示。3、但是要查找姓名中包含有【张】,那么不能用等号,如下图所示。4、因此一定要必须使用Like关键字,才能查询SQL的数据。5、这个时候,如果...

MySQL:如何查询出每个分组中的 top n 条记录?
1. MySQL 5.7 我们先写一个查询语句。根据order_date 中的年、月,和order_amount进行降序排列。然后,添加一个新列:order_amount(本条记录在本月中的名次)。执行结果:可以看到,根据年、月、订单金额排序了,还多了一列order_rank,显示出了本条记录在本月的订单金额排名情况。上面SQL中比较...

sql中根据表中一个字段分组分别统计每个分组的记录数
分组函数允许嵌套,但是嵌套之后的分组函数的查询之中不能再出现任何其它字段 例子:按照职位分组,统计平均工资最高的工资 当添加其它字段‘job’之后出现错误 例子:查询出每个部门的名称、位置、部门的人数、平均工资 确定所需的数据表: emp表:部门的人数,平均工资 dept表:部门的名称,位置 确定已知...

「SQL 基础篇」分组查询
若要查询每个供应商提供的产品数量,则需运用分组聚合功能。通过分组,可以将数据划分成多个逻辑组,并分别对每个组进行聚合计算。一. 分组聚合 创建分组的操作是通过 SELECT 语句中的 GROUP BY 子句实现的。以下是一个产品信息表示例:以下 SQL 语句返回每个供应商提供的产品总数:分组查询结果:上述 ...

SQL执行顺序
查询的关键步骤依次为:1) from(从哪个表获取数据),2) where(过滤条件),3) group by(数据分组),4) having(对分组后的数据进行筛选),5) select(选择或计算列),6) order by(排序结果)。这些关键字的执行顺序并非与书写顺序相同,而是有特定的顺序:先from,接着where,然后group by...

相似回答