4. Using dense_rank()
delete from Emp where rowid in(select rid from(select rowid rid,
dense_rank() over(partition by ID order by rowid) rownum from Emp) where rownum > 1);
Can use rank() and dens_rank() since both will give unique records when order by rowid.
5. Using Group By
delete from Emp where ID in(select ID from Emp group by ID having count(*) >1)
delete from Emp where(ID,name) in(select max(ID),name from Emp group by name);
More Examples 


Query 1
SET ROWCOUNT 1 
DELETE FROM Emp WHERE ID = 1 
SET ROWCOUNT 0  
Query 2
DELETE TOP(1) FROM EMPLOYEE WHERE EMPNO = 1;
Query 3
DELETE TOP (SELECT COUNT(*) -1 FROM EMPLOYEE WHERE EMPNO = 1)  
FROM EMPLOYEE  
WHERE EMPNO = 1;
All the above three query removes duplicates