在不同值之间生成的增量数

时间:2017-06-27 16:02:55

标签: sql

我有一张表

31

我正在寻找输出 像

Apple
Apple
Grape
Grape
Grape
Orange
Orange
Orange

因此它应该区分值并获得一个自动递增的数字。

到目前为止我的努力是这样的。

1 Apple
2 Grape
3 Orange

在大型数据集上执行此操作的最佳方法是什么。

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找dense_rank()

select dense_rank() over (order by Fruit) as id, Fruit
from mytable;

返回原始行。

如果您只需要每fruit行一行,请选择行,然后使用row_number()

select fruit, row_number() over (order by fruit)
from (select distinct fruit from mytable) t;

不要对列别名使用单引号。