开始使用免费开始使用

获取代数数量?

在本练习中,我们将查看一个随机的家谱。数据集 family 包含 3 列:IDnameParentID。 您的任务是计算代数的数量。方法是从 ParentID = 101 的那个人开始,统计所有代。

为此,您需要计算递归的 LEVEL,它表示在代际层级中的当前层级。随后,使用 COUNT() 统计 LEVEL 的数量。请记住,层级的计数就是代数的数量。例如,层级计数为 100,表示您找到了 100 代。

本练习是课程的一部分

SQL Server 中的分层与递归查询

查看课程

练习说明

  • 初始化递归的起点,将 ParentID 设为 101
  • LEVEL 设为当前递归步骤。
  • 将锚成员与 CTE 按父级和子级的 ID 进行连接。
  • 使用 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);
编辑并运行代码