使用dense_rank来查找不同的

时间:2016-05-18 02:01:37

标签: sql

我有一张类似这样的表

Id  student_name    City
4   abc             Mumbai
6   xyz             Delhi
4   lmn             Kolkata
6   abc             Mumbai
6   GHI             Chennai

我正在使用dense_rank()函数来解除表中ID的重复条目意味着如果我有两次ID 4,它应该只在输出中给我一次。< / p>

当我使用dense_rank函数时:

select dense_rank() over (order by student_id desc  ) as ID ,Id, student_name,city
from test

它给了我这样的输出

ID  ID  student_name    city
1   4   abc             Mumbai
1   4   lmn             kolkata
2   6   xyz             Delhi
2   6   abc             Mumbai

但我不想重复使用dense_rank()功能

的删除方式

1 个答案:

答案 0 :(得分:0)

首先,dense_rank()中的select不会进行过滤。所以,我不知道为什么当输入有五行时输出会有四行。

其次,要为每个ID仅保留一行,请使用row_number(),而不是dense_rank()。 。 。以及子查询:

select t.*
from (select t.*,
             row_number() over (partition by student_id order by student_id) as seqnum
      from test t
     ) t
where seqnum = 1;