我需要对一组产品进行抽样。产品属于某种形式。表格可以映射到某些目录。
例如,form = 1523映射到catalog = 5和catalog = 8
我需要在特定表格上运行,并从每个目录中最多带来750个产品。
我想过使用限制(RowNum< = 750 *目录数量),但我不明白我如何限制每个目录而不是总查询结果。
另外,我之前并不了解特定表格中有多少目录。
例如,假设我每个目录只需要2行。我的样本是:
Product Form Catalog
-----------------------
1 50 5
2 50 6
3 50 6
4 50 6
如何从目录6中获得产品1和2随机产品的结果?
答案 0 :(得分:4)
您可以使用分析函数row_number():
select product, form, catalog from
( select product, form, catalog,
row_number() over (partition by catalog order by product, form) as rn
from mytable
)
where rn <= 750
partition by catalog
子句获取目录中的行号。您需要将order by
子句放在那里,但是您可能希望以不同的顺序排序,这取决于您。