BaşlayınÜcretsiz Başlayın

Nesil sayısını bul

Bu egzersizde rastgele bir soy ağacına bakacağız. family veri kümesi üç sütundan oluşur: ID, name ve ParentID. Görevin nesil sayısını hesaplamak. Bunu, ParentID = 101 olan kişiden başlayarak tüm nesilleri sayarak yapacaksın.

Bu görev için, kuşak hiyerarşisindeki mevcut düzeyi temsil eden özyinelemenin LEVEL değerini hesaplaman gerekiyor. Sonrasında COUNT() kullanarak LEVEL sayısını bulmalısın. Unutma, seviye sayısı nesil sayısına karşılık gelir; örneğin, 100 seviye sayısı 100 nesil bulduğun anlamına gelir.

Bu egzersiz

SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • ParentID değerini 101 yaparak özyineleme başlangıcını başlat.
  • LEVEL değerini mevcut özyineleme adımına ayarla.
  • Sabit (anchor) üyeyi, ebeveynin ve çocuğun ID’si üzerinden CTE ile birleştir.
  • Nesil sayısını COUNT() ile hesapla.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

WITH children AS (
    SELECT 
  		ID, 
  		Name,
  		ParentID,
  		0 as LEVEL
  	FROM family 
  	-- Set the targeted parent as recursion start
  	WHERE ___ = ___
    UNION ALL
    SELECT 
  		child.ID,
  		child.NAME,
  		child.ParentID,
  		-- Increment LEVEL by 1 each step
  		___ + ___
  	FROM family child
  		INNER JOIN children 
		-- Join the anchor query with the CTE   
  		ON child.___ = children.___)
    
SELECT
	-- Count the number of generations
	___(___) as Generations
FROM children
OPTION(MAXRECURSION 300);
Kodu Düzenle ve Çalıştır