获取代数数量?
在本练习中,我们将查看一个随机的家谱。数据集 family 包含 3 列:ID、name 和 ParentID。
您的任务是计算代数的数量。方法是从 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);