力扣sql中等篇练习(三) 1 树节点 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # not in匹配上了返回的值是1,casw when里面也是可以使用not in和子查询的 # 注意去重的时候需要筛选掉null值 SELECT id, case when p_id is null then 'Root' when (id not in (SELECT distinct p_id FROM tree WHERE p_id is not null))=1 then 'Leaf' else 'Inner' end type FROM tree 1.3 运行截图 2 两人之间的通话次数 2.1 题目内容 2.1.1 基本题目信息 2.1.2 示例输入输出 2.2 示例sql语句 # 两个人之间的通话需要统计成一次 # 这种两个列名之间存在交换的情况 如 1,2 2,1这种可以考虑在分组函数里面使用least函数和greast函数 SELECT from_id person1,to_id person2,count(*) call_count,sum(duration) total_duration FROM Calls GROUP BY least(from_id,to_id),greatest(from_id,to_id) 2.3 运行截图 3 换座位 3.1 题目内容 3.1.1 基本题目信息 3.1.2 示例输入输出 3.2 示例sql语句 # case函数和if有时可以实现一样的功能 # MOD(N, M) 可以得到n除以m后的余数 SELECT IF(id%2=0,id-1,IF(id=(SELECT count(*) FROM Seat),id,id+1)) id,student FROM Seat ORDER BY id asc 3.3 运行截图