如何编写查询以产生期望的结果?

时间:2019-09-18 14:15:41

标签: sql oracle

我想使用一个查询,显示前两个最佳数量。如果表格如图片所示,如何产生期望的结果

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用DENSE_RANK()。例如:

select
  id, name, quantity
from (
  select
    id, name, quantity,
    dense_rank() over(order by quantity desc) as rk
  from t
) x
where rk <= 2

DENSE_RANK()根据您选择的顺序为每一行计算一个数字。相同的值获得相同的数字,并且不会跳过任何数字。参见SQL Fiddle

答案 1 :(得分:0)

您可以在查询中使用TOP / LIMIT函数。这样您就可以选择特定数量的行。

使用5作为数字,您可以从以下位置获得所需的结果:

表名中选择列名,条件为 number

选择顶部(数字)/(百分比)列名表名条件的地方;

相关问题