Create a table:


create table Test_del(EMP_NO  integer, EMP_NAME varchar2(20),SALARY  number);

Insert into TEST_DEL
   (EMP_NO, EMP_NAME, SALARY)
 Values
   (210, 'SACHIN', 2100);
Insert into TEST_DEL
   (EMP_NO, EMP_NAME, SALARY)
 Values
   (240, 'RAJ', 2500);
Insert into TEST_DEL
   (EMP_NO, EMP_NAME, SALARY)
 Values
   (210, 'SEEMA', 2500);
Insert into TEST_DEL
   (EMP_NO, EMP_NAME, SALARY)
 Values
   (216, 'RANU', 3000);
Insert into TEST_DEL
   (EMP_NO, EMP_NAME, SALARY)
 Values
   (216, 'PAPPU', 5000);

Precaution:


1. Take a back up of your data;
2. Double verify the duplicates.

Method:
1. Group by method:


SQL> select * from Test_del;

    EMP_NO EMP_NAME                 SALARY
---------- -------------------- ----------
       216 PAPPU                      5000
       216 RANU                       3000
       210 SEEMA                      2500
       240 RAJ                        2500
       210 SACHIN                     2100

SQL>


SQL> delete from Test_del where (EMP_NO,EMP_NAME,salary) in (select max(emp_no),
emp_name,salary from Test_del group by emp_name,salary);

5 rows deleted.



SQL> select * from Test_del;

no rows selected

Note: above statement will deleted the all recorded;

=====================

2ND method: 



create table EMP11 (name varchar2(20), dept_no number(10), salary number (20));
insert into emp11 VALUES ('SACHIN',200,1200);
insert into emp11 VALUES ('PAPPU',200,1400);
insert into emp11 VALUES ('RAJESH',200,1800);
insert into emp11 VALUES ('NAMO',205,2200);
insert into emp11 VALUES ('BEENU',201,1000);


DELETE FROM EMP11 WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM EMP11 GROUP BY SALARY);