Prueba esta consulta a ver que te parece.
select S.codigo_region, R.nombre, S.CONTADOR
from Region R, (Select D.codigo_region, count( D.Codigo) CONTADOR From Departamento D group by D.codigo_region) S
where S.CONTADOR >3
and S.codigo_region=R.codigo_region
Si no me he equivocado, que podría ser
, te devuelve una lista con el código de la región, su nombre y el número de departamentos que tiene esa región. ( siempre y cuando sean más de 3)
Con una pequeña modificación hará lo que pides en el primer punto.
Y te servirá de ejemplo para el segundo :)
El segundo punto lo resuelves de una forma muy parecida, pero cruzando las 3 tablas.
No soy partidario de hacer las cosas exactamente como las piden, si no, el interesado no aprende nada.
Espero que te sea de ayuda. Si tienes problemas y te lias mucho vuelve a preguntar