我需要从Snowflake中的单个表中只提取属于不同类别的前n条记录(没有排名,任何随机顺序(。下面是我使用的代码
select top 100 A.col1,A.col2 from A where A.category = 'X'
union all
select top 50 A.col1,A.col2 from A where A.category = 'Y'
union all
select top 10 A.col1,A.col2 from A where A.category = 'Z'
我想知道是否有一种优化的方法来进行此操作?
一个简单的方法是:
with a_example as (
select col1,
col2,
row_number() over(partition by category order by category) [order]
from A
where category in ('X','Y','Z')
)
select col1, col2
from a_example
where [order] <= 10
每个DBMS的语法都不应该改变(太多(。