← Wszystkie zadaniaSQL · Senior
Wszyscy podwładni przez rekurencyjne CTE
Wypisz wszystkich bezpośrednich i pośrednich podwładnych pracownika z id = 1: kolumny id, name i depth (1 dla bezpośredniego podwładnego, 2 dla podwładnego podwładnego i tak dalej). Sortowanie według depth, potem id. Głębokość hierarchii nie jest znana z góry.
Tabele
CREATE TABLE employees (
id int PRIMARY KEY,
name text NOT NULL,
manager_id int REFERENCES employees (id) -- NULL for the CEO
);Ctrl+Enter uruchamia testy. Tab robi wcięcie; aby wyjść z edytora klawiaturą, naciśnij Esc, a potem Tab. Kod zapisuje się w tej przeglądarce.
Testy (3)
Każdy test wypełnia tabele własnymi danymi i porównuje wynik twojego zapytania z oczekiwanym: te same kolumny (nazwy i kolejność) i te same wiersze w tej samej kolejności, więc ORDER BY ma znaczenie. Zapytanie działa w prawdziwym PostgreSQL prosto w przeglądarce; pierwsze uruchomienie go pobiera (około 5 MB).
INSERT INTO employees VALUES (1, 'CEO', NULL), (2, 'CTO', 1), (3, 'CFO', 1), (4, 'Dev lead', 2), (5, 'Accountant', 3), (6, 'Developer', 4), (7, 'Intern', 6);
-- another branch of the company is not included INSERT INTO employees VALUES (1, 'Head of A', NULL), (9, 'Head of B', NULL), (2, 'A1', 1), (3, 'B1', 9), (4, 'A2', 2);
-- nobody reports to employee 1 INSERT INTO employees VALUES (1, 'Solo', NULL), (2, 'Other', NULL);