開始使用免費開始

取得世代數量?

在這個練習中,我們要查看一個隨機的家譜。資料集 family 有三個欄位:IDnameParentID。 你的任務是計算世代的數量。你會從 ParentID = 101 的那個人開始,來計算所有的世代。

為了完成這個任務,你需要計算遞迴的 LEVEL,它代表世代階層中的目前層級。之後,使用 COUNT() 來計算 LEVEL 的數量。請記住,層級的計數就是世代的數量;例如,層級數為 100,表示你找到了 100 個世代。

本練習屬於課程

SQL Server 的階層式與遞迴查詢

檢視課程

練習說明

  • 以將 ParentID 設為 101 來初始化遞迴的起點。
  • LEVEL 設為目前的遞迴步驟。
  • 以父節點與子節點的 ID,將錨點成員與 CTE 進行連接。
  • 使用 COUNT() 計算世代的數量。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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);
編輯並執行程式碼