Buenos días learn_sql, creo que te faltó incluir en tu declaración de tu tabla EMPLEADOS la declaración del campo NUM_DPT, ya que sólo el contraint de llave foránea, pero no la declaración del campo como tal. Para hacer lo que quieres existen varias formas, utilizando los operadores IN, EXIST y ANY te pongo un ejemplo de cómo sería, pero te recomiendo que cheques tu ayuda en línea para que aprendas más acerca de estos operadores.
con ANY:
Código SQL:
Ver originalDELETE FROM DEPARTAMENTOS
WHERE NOT(NUM_DPT = ANY (SELECT DISTINCT NUM_DPT FROM EMPLEADOS))
con EXISTS:
Código SQL:
Ver originalDELETE FROM DEPARTAMENTOS WHERE
NOT EXISTS (SELECT * FROM EMPLEADOS E WHERE E.NUM_DPT = DEPARTAMENTOS.NUM_DPT)
con IN:
Código SQL:
Ver originalDELETE FROM DEPARTAMENTOS
WHERE NUM_DPT NOT IN (SELECT DISTINCT NUM_DPT FROM EMPLEADOS)
Saludos
Leo.