select level, lpad('-', level*2-2, '=') as position, employee_id as emp_id, last_name as emp_name, prior employee_id as man_id, prior last_name as man_name, salary - prior salary as diff from employees --where salary - prior salary > 0 connect by prior employee_id = manager_id start with employee_id = 100 ast abschneiden select level, lpad('-', level*2-2, '=') as position, employee_id as emp_id, last_name as emp_name, prior employee_id as man_id, prior last_name as man_name, salary - prior salary as diff from employees --where salary - prior salary > 0 -- where prior employee_id != 108 connect by prior employee_id = manager_id and employee_id != 108 start with employee_id = 101 select hd, count(hd) from ( select extract(year from hire_date) hd from employees --union --select level+1985 i from dual connect by level < 20 ) group by hd order by hd select jahr, count(hire_date) from (select level+1985 jahr from dual connect by level < 20) left join employees on extract(year from hire_date) = jahr group by jahr order by jahr select prior salary - salary, salary, last_name from ( select rownum rn, last_name, salary from ( select last_name, salary from employees order by salary desc ) ) connect by prior rn = rn-1 start with rn = 1 === Ähnliches Resultat, plain SQL === select a.first_name, a.last_name, a.salary, max(b.salary), (max(b.salary)-a.salary) from employees a join employees b on a.salary > b.salary and a.employee_id <> b.employee_id group by a.first_name, a.last_name, a.salary order by a.salary desc; === Hierchie in einer Zeile === select first_name || ' ' || last_name employee_name, level, lpad('>', level * 3, '*') p, sys_connect_by_path ( first_name || ' ' || last_name, '/') h from employees e connect by prior employee_id = manager_id start with employee_id = (select employee_id from employees where manager_id is null) -- = 100