SQL 刷题/【字节跳动】使用递归 CTE 追溯宠物猫后代健康指数
上一题下一题困难通过率 33%

【字节跳动】使用递归 CTE 追溯宠物猫后代健康指数

JOIN 连接路径分析面试真题

题目描述

来源:字节跳动 SQL 面试真题

某大型宠物繁育协会记录了注册宠物猫的基本信息和繁育后代。近期发现一只名为 Luna 的母猫携带某种隐性遗传病基因,协会需要追溯 Luna 的所有直系后代,包括子女、孙辈和曾孙辈等,并计算每只后代的综合健康评估指数。

数据表

cats 宠物猫信息表

字段类型说明
cat_idINT宠物猫注册编号,主键
cat_nameVARCHAR(64)宠物猫呼名
breedVARCHAR(64)宠物猫品种

breeding_records 繁育记录表

字段类型说明
parent_cat_idINT父母猫注册编号
child_cat_idINT子代猫注册编号
birth_dateDATE子代猫出生日期
health_scoreFLOAT子代猫出生时的健康评分,满分 100

业务规则

  1. 只统计 birth_date 在 2025-01-01 至 2025-12-31 之间的繁育关系,包含首尾两日。
  2. 递归链路上的每一条繁育记录都必须满足日期条件。如果中间某一代不在 2025 年出生,该关系及其后续分支都不能进入结果。
  3. Luna 的直接子女 generation = 1,孙辈 generation = 2,依此类推。
  4. composite_index = health_score × 0.95^generation。
  5. composite_index 四舍五入保留 2 位小数。

输出要求

查询由名为 Luna 的宠物猫繁育出的所有直接和间接后代,输出:

字段说明
descendant_id后代猫注册编号
descendant_name后代猫呼名
generation世代代数,直接子女为 1
composite_index综合健康评估指数,四舍五入保留 2 位

排序规则:

  1. generation 升序。
  2. composite_index 降序。
  3. descendant_id 升序。

数据样例

当前运行环境
cat_idPKINTcat_nameVARCHAR(64)breedVARCHAR(64)
1Luna布偶猫
2Milo布偶猫
3Nala布偶猫
4Coco缅因猫
5Leo英短
6Mimi布偶猫
7Simba缅因猫
8Oscar英短
输入数据显示 8 / 10
SQL 编辑器正在保存草稿...
正在加载 SQL 编辑器...

运行你的 SQL 查询后,结果将显示在这里