常见问题wheregroup by ——《面试中被录取的候选人》LeetCode Plus 会员专享题【详细解析】Hive / MySQL"/>
常见问题wheregroup by ——《面试中被录取的候选人》LeetCode Plus 会员专享题【详细解析】Hive / MySQL
大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界,一起学习!
感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦。
另外也欢迎大家关注我的SQL刷题专栏,里面有我分享的高质量SQL题,以及详细的解析。
目录
- 问题描述
- 解题思路
- 代码实现
- 结束语
本篇博文又是我的SQL题分享环节,为了记录一下自己的做题过程,以及防止后续力扣会员过期无法再次查看题目,所以我每天都会给大家选出一道质量较高的SQL题目发表到博客上,并且会加上自己的一些解题技巧或实用知识点,希望对大家也能有所帮助。
那么今天给大家分享的题是LeetCode的第2041题——面试中被录取的候选人。
下面是问题的详细描述。
问题描述
表:Candidates
+--------------+----------+
| Column Name | Type |
+--------------+----------+
| candidate_id | int |
| name | varchar |
| years_of_exp | int |
| interview_id | int |
+--------------+----------+
candidate_id 是这个表的主键。
该表的每一行都表示候选人的姓名、工作年限以及面试 ID 。
表:Rounds
+--------------+------+
| Column Name | Type |
+--------------+------+
| interview_id | int |
| round_id | int |
| score | int |
+--------------+------+
(interview_id, round_id)是本表的主键。
本表的每一行都表示一轮面试的分数
编写一个 SQL 查询,查询出至少有两年工作经验、且面试分数之和 严格大于 15 的候选人的 ID 。
可以以 任何顺序 返回结果表。
查询结果的格式如下例所示。
示例:
输入:
Candidates table:
+--------------+---------+--------------+--------------+
| candidate_id | name | years_of_exp | interview_id |
+--------------+---------+--------------+--------------+
| 11 | Atticus | 1 | 101 |
| 9 | Ruben | 6 | 104 |
| 6 | Aliza | 10 | 109 |
| 8 | Alfredo | 0 | 107 |
+--------------+---------+--------------+--------------+
Rounds table:
+--------------+----------+-------+
| interview_id | round_id | score |
+--------------+----------+-------+
| 109 | 3 | 4 |
| 101 | 2 | 8 |
| 109 | 4 | 1 |
| 107 | 1 | 3 |
| 104 | 3 | 6 |
| 109 | 1 | 4 |
| 104 | 4 | 7 |
| 104 | 1 | 2 |
| 109 | 2 | 1 |
| 104 | 2 | 7 |
| 107 | 2 | 3 |
| 101 | 1 | 8 |
+--------------+----------+-------+
输出:
+--------------+
| candidate_id |
+--------------+
| 9 |
+--------------+
解释:
- 候选人 11 :总分是 16 ,1 年工作经验。由于工作年限,不列入结果表。
- 候选人 9 :总分是 22 ,6 年工作经验。列入结果表。
- 候选人 6 :总分是 10 ,10 年工作经验。由于分数不足,不列入结果表。
- 候选人 8 :总分是 6 ,0 年工作经验。由于工作年限和分数,不列入结果表。
解题思路
- 两表以interview_id连接;
- 筛选出两年经验或以上的;
- 按candidate_id分组,取分数15分及以上的即可。
代码实现
select candidate_id
from Candidates join Rounds
using(interview_id)
where years_of_exp>=2
group by 1
having sum(score)>15
结束语
看完这篇,还有更多知识点分享给你哦,自己慢慢找哈,就在下面链接。
推荐关注的专栏
👨👩👦👦 机器学习:分享机器学习实战项目和常用模型讲解
👨👩👦👦 数据分析:分享数据分析实战项目和常用技能整理
往期内容回顾
💚 学习Python全套代码【超详细】Python入门、核心语法、数据结构、Python进阶【致那个想学好Python的你】
❤️ 学习pandas全套代码【超详细】数据查看、输入输出、选取、集成、清洗、转换、重塑、数学和统计方法、排序
💙 学习pandas全套代码【超详细】分箱操作、分组聚合、时间序列、数据可视化
💜 学习NumPy全套代码【超详细】基本操作、数据类型、数组运算、复制和试图、索引、切片和迭代、形状操作、通用函数、线性代数
关注我,了解更多相关知识!
CSDN@报告,今天也有好好学习
更多推荐
常见问题wheregroup by ——《面试中被录取的候选人》LeetCode Plus 会员专享题【详细解析】Hive / MySQL
发布评论