Una de las mejores formas de atacar consultas que no sabes hacer es ir por partes. En el caso que pones puedes empezar por sacar los empleados por departamento (lo que serían las 2 primeras columnas). Esa es una consulta sencilla que puede escribirse tal que así:
SELECT D.DEPARTMENT_ID AS DEPARTMENT,E.LAST_NAME AS EMPLOYEE
FROM DEPARTMENTS AS D
INNER JOIN EMPLOYEES AS E ON (D.DEPARTMENT_ID = E.DEPARTMENT_ID)
Ahora lo que falta es sacar los compañeros de cada empleado. Para ello simplemente hay que volver a unir con la tabla de empleados y obtener los registros con el mismo ID de departamento. Además hay que imponer la condición de que el ID del compañero no sea el mismo que el del propio empleado (para que no aparezcan los empleados como compañeros de sí mismos):
SELECT D.DEPARTMENT_ID AS DEPARTMENT,E.LAST_NAME AS EMPLOYEE,C.LAST_NAME AS COLLEAGUE
FROM DEPARTMENTS AS D
INNER JOIN EMPLOYEES AS E ON (D.DEPARTMENT_ID = E.DEPARTMENT_ID)
INNER JOIN EMPLOYEES AS C ON (E.DEPARTMENT_ID = C.DEPARTMENT_ID)
WHERE E.EMPLOYEE_ID <> C.EMPLOYEE_ID
No lo he probado pero no debería ir muy desencaminado. El INNER JOIN para sacar los compañeros puede ser un LEFT JOIN si se quiere sacar los empleados que no tienen compañeros también (en este caso aparecería un valor NULL en la columna de compañeros).