select *
from (select type,
variety,
price,
rank() over ([partition by something]
order by price) rnk
from fruits) rank_subquery
where rnk <= 3
如果省略[partition by something]
,您将获得前三行。如果你想要每个 的前三名type
,你会partition by type
在你的rank()
函数中。
根据您想要如何处理关系,您可能想要使用dense_rank()
或row_number()
而不是rank()
。如果两行并列,使用rank
,则下一行的 arnk
为 3,而使用 时的 arnk
为 2 dense_rank
。在这两种情况下,两个并列行的 arnk
为 1。 row_number
将任意赋予两个并列行中的一个 arnk
为 1,另一个 arnk
为 2。