我有一张类似这样的表
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()
功能
答案 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;