add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE my_table ( ID, STUDENT_ID, SUBJECT_ID, CLASS_ID, EXPERTISE_LVL ) AS
SELECT 1, '1AAA', '55FFE', 'CLASS808', 2 FROM DUAL UNION ALL
SELECT 2, '1AAA', '55FFE', 'CLASS808', 2 FROM DUAL UNION ALL
SELECT 3, '2AAB', '49BB', 'CLASS890', 3 FROM DUAL UNION ALL
SELECT 4, '2AAB', '49BB', 'CLASS890', 3 FROM DUAL UNION ALL
SELECT 5, '2AAB', '49BB', 'CLASS890', 4 FROM DUAL UNION ALL
SELECT 6, '2AAB', '49BB', 'CLASS890', 3 FROM DUAL;
6 rows affected
DELETE FROM my_table
WHERE ROWID IN (
SELECT ROWID
FROM (
SELECT ROW_NUMBER() OVER (
PARTITION BY student_id, subject_id, class_id
ORDER BY expertise_lvl DESC
) AS rn
FROM my_table
)
WHERE rn > 1
)
4 rows affected
SELECT * FROM my_table;
ID STUDENT_ID SUBJECT_ID CLASS_ID EXPERTISE_LVL
2 1AAA 55FFE CLASS808 2
5 2AAB 49BB CLASS890 4