CodeBlanks Logo Icon CodeBlanks

Hiyerarşi raporu

Recursive CTE ile ast-üst raporu yaz

Hiyerarşi raporu

Bu meydan okumada recursive CTE ile organizasyon hiyerarşisi çıkaracaksın.

WITH RECURSIVE org AS (
  SELECT id, name, manager_id, 1 AS level
  FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.id, e.name, e.manager_id, o.level + 1
  FROM employees e JOIN org o ON e.manager_id = o.id
)
SELECT * FROM org ORDER BY level;

Örnekte: organizasyon ağacı.

WITH RECURSIVE ile org adında kendine başvuran geçici bir sonuç kümesi (CTE) tanımlanır; ardından gelen sorgu onu bir tablo gibi kullanır. org kaynağından tüm sütunlar seçilir. Sonuç level değerine göre küçükten büyüğe sıralanır.

Uygulama Hiyerarşi raporu

Recursive CTE ile organizasyon hiyerarşisini çıkar: anchor en üst, recursive astları ekler.

Başlangıç kodu

query.sql
-- hiyerarşi raporu için recursive CTE yaz
-- employees tablosunu kullan

Örnek çözüm

query.sql
WITH RECURSIVE org AS (
  SELECT id, name, manager_id, 1 AS level
  FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.id, e.name, e.manager_id, o.level + 1
  FROM employees e JOIN org o ON e.manager_id = o.id
)
SELECT * FROM org ORDER BY level;

Beklenen çıktı

id  name    level
1   Fatma   1
2   Ayşe    2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Recursive CTE'de ne birleşir?

  • UNION ALL Doğru cevap
  • INTERSECT
  • JOIN
  • EXCEPT

Açıklama: Recursive CTE UNION ALL ile birleşir.

2 Hiyerarşi raporu: kavramları eşleştir

Kavram Anlamı
recursive özyineli
anchor temel
UNION ALL birleştir
level seviye

İleri seviye bölümündeki tüm dersler