我有数千行数据.其中两列称为Area和Sub Area.每个区域有大约4,5个或更多子区域.
我想为每个区域和子区域选择一个随机的记录样本,例如前十名,但不能想到如何有效或快速地做到这一点.
我曾经考虑过UNION每次选择每个区域和子区域,但我必须这样做120个UNION语句,因为有120行不同的区域和子区域.
当我考虑Case在SELECT列表中做声明时,同样的问题也存在.
我想也许我可以使用CTE或WHILE LOOP以某种方式但没有太多运气.可以在这里使用Window函数吗?
有任何想法吗?
您可以尝试以下方法为每个子区域选择随机的10条记录.
select *
from (select *,
row_number()
over(
partition by subarea
order by newid()) RN
from yourtable) T
where rn <= 10
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,order by newid()将为您提供随机记录,并partition BY subarea为每个子区域生成不同的rownumber.
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |