select department_name, count(*) c from employees e join departments d on e.department_id = d.department_id group by department_name having count(*) >= 5 order by c desc with ym as ( select employee_id, -- extract(year from hire_date) y, extract(month from hire_date) m from employees ) select m, count(employee_id) from ym group by m order by m with gehaltklassen as ( select salary, case when salary < 7000 then 0 when salary < 12000 then 1 else 2 end gehaltklasse from employees ) select gehaltklasse, dg, count(dg) from ( select gehaltklasse, decode(gehaltklasse, 0, 'wenig', 1, 'mittel', 2, 'viel') dg from gehaltklassen ) group by gehaltklasse, dg order by gehaltklasse select decode(cc, 0, 'alt', 1, 'mittel', 2, 'jung'), count(cc) from ( select (case when jahr > 15 then 0 when jahr > 10 then 1 else 2 end) cc from ( select first_name, last_name, trunc(MONTHS_BETWEEN(SYSDATE, hire_date)/12) jahr from employees ) ) group by cc order by cc SELECT COUNTRIES.COUNTRY_NAME, count(DEPARTMENTS.DEPARTMENT_ID) FROM DEPARTMENTS , LOCATIONS , COUNTRIES WHERE ( (LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID) AND (COUNTRIES.COUNTRY_ID = LOCATIONS.COUNTRY_ID) ) group by COUNTRY_NAME