想要一种优化的方法,从SQL中的表中只提取不同类别的少数记录



我需要从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的语法都不应该改变(太多(。

最新更新