当前位置: 代码迷 >> Sql Server >> 微软的考题 。SQL查询
  详细解决方案

微软的考题 。SQL查询

热度:35   发布时间:2016-04-24 10:28:56.0
微软的考试题 。SQL查询
学校有一、二、三。。。。至十班。
假设每个班上有30名学生。张、李、刘、苏等
现有这样的表  student ,字段 class 及name 。其中class 表示班级,name 表示每班学生姓名。
要求每班任意抽取3名学生出来,进行学校大扫除。

请写出这样的SQL语句。
------解决方案--------------------
这不就是按照class分组排序,然后抽指定编号范围嘛。难道题目还有其他坑?
------解决方案--------------------
大概类似这样:

select top 3 *
from tb 
order by checksum(newid())
------解决方案--------------------
用row_number() over(partition by 班级 order by newid())
然后再取小于等于3的即可
------解决方案--------------------
大致这样吧
select name
from (select (row_number() over (partition by class order by checksum(newid()))) id,*
from student ) a
where id<=3

------解决方案--------------------
他们的都是sqlserver的写法,不是oracle的。。。
  相关解决方案