First of all,
If there are some unique columns or combination of columns,
it would be better to add UNIQUE(or PRIMARY KEY) constraints for those columns or combination of columns,
to prevent insertion of duplicated rows and to eliminate duplication check by users.
A query to check I) and II) might be something like...
Code:
SELECT <columns to be checked duplication>
, MAX( <col-1> ) AS <col-1>
, MAX( <col-2> ) AS <col-2>
...
, MAX( <col-n> ) AS <col-n>
, CASE WHEN COUNT(*) > 1 THEN 'Dup ' ELSE ' ' END
|| CASE WHEN COUNT( <col-1> ) < COUNT(*) THEN ' 1' ELSE ' ' END
|| CASE WHEN COUNT( <col-2> ) < COUNT(*) THEN ' 2' ELSE ' ' END
...
|| CASE WHEN COUNT( <col-n> ) < COUNT(*) THEN ' n' ELSE ' ' END
AS flags
FROM <your-table>
GROUP BY
<columns to be checked duplication>
HAVING
COUNT(*) > 0
OR COUNT( <col-1> ) < COUNT(*)
OR COUNT( <col-2> ) < COUNT(*)
...
OR COUNT( <col-n> ) < COUNT(*)
;
Note: If duplication and nulls are both exist for a set of rows, values of columns might be inaccurate.