求分组取前60的SQL语句
有一组数据,字段为:单位、姓名,数据有若干个单位。要求在单位随机选出60名员工,不足60人的单位,全部员工都选出来,求SQL语名,谢谢!
之前的思路,试了一下row_number() over(order by newid()) as rndid,然后通过查询各校rndid前60的员工,但查询时随机数在变化,无法确认前60的员工。
请各位高手的思路及SQL。谢谢!
------解决方案-------------------- select 单位,姓名
from (
select 单位,姓名,row_number() over(partition by 单位 order by newid()) as rndid
from TB ) as a
where rndid<61
------解决方案--------------------
既然随机60位 ,当然每次查询都不一样了。如果供后续查询 必须永久存到表中。
------解决方案--------------------你本来就是随机60的。如果有条件的60那么才能只以查询的方式。
你应该保存为了一个实体表。
------解决方案--------------------看看看看
------解决方案--------------------
这个。。。。那你只能从每个单位随机取人数了 但是部门总数又不固定
所以很难办的。
------解决方案--------------------太多的随机查询容易导致逻辑混乱和编写复杂,先要考虑必要性、可行性才去实现
------解决方案--------------------你的要求是随机选出60名员工,那么为了保证后续查询的一致,考虑把查询结果保存到实体表。至于你后面提出的问题,保证每个部门人数较为相等。这个不好搞,首先你单位部门数量不一致,其次单位部门设置也不一致