SQL,table 中值实例的顺序

SQL, order of value instance in table

我希望这是一个简单的问题,但我什至不确定如何处理它。假设我有一个 table。我对几列的 table 做了一个 select 声明。我想再添加一个公式列,它将显示指定列中某个值的实例 number/count 出现。基本上这个值已经出现在数据中多少次了。一个例子会让事情变得容易得多。

假设我有 2 个这样的列:

col1    |    col2

Orange    |    mike

Orange    |    tim

Banana    |    john

Banana    |    mike

Orange    |    jimmy

我需要得到的(基于col1)是这样的:

col1    |    col2    |    newcol

Orange    |    mike    |    1

Orange    |    tim     |   2

Banana    |    john    |    1

Banana    |    mike    |    2

Orange    |    jimmy    |3

我 运行 在 dashDB 下。然而,我的查询 运行 有 7 个 JOIN 语句,大量的子查询,并且它已经 "group by"'e 了很多其他列。

根据我的检查,DashDB 支持分析函数,所以这应该可以。

select col1,col2,
       row_number() over(partition by col1 order by col1,col2 asc ) as newcol
from mytable
order by col1,col2;

希望这会有所帮助 尼克

试试这个,

select col1 , col2 , dense_rank() 在(按 col1col1 排序,col2 asc 分区)作为 newcol 来自 table_info