力扣-Mysql-3278. 寻找数据科学家职位的候选人 II(中等)
一、题目来源
3278. 寻找数据科学家职位的候选人 II - 力扣(LeetCode)
二、数据表结构
表:
Candidates+--------------+---------+ | Column Name | Type | +--------------+---------+ | candidate_id | int | | skill | varchar | | proficiency | int | +--------------+---------+ 是这张表的主键(有不同值的列)。 每一行包括 candidate_id 和技能,以及熟练程度(1-5)。表:
Projects+--------------+---------+ | Column Name | Type | +--------------+---------+ | project_id | int | | skill | varchar | | importance | int | +--------------+---------+ (project_id, skill) 是这张表的主键。 每一行包括 project_id,所需技能,以及项目的重要性(1-5)。
三、需求
Leetcode 正在为多个数据科学项目招聘人员。编写一个解决方案来根据以下条件为 每一个项目 找到 最佳候选人:
- 候选人必须拥有项目所需的 所有 技能。
- 为每个候选人-项目对计算如下的 分数:
- 从
100分 开始。 - 对于每一个技能,当 熟练程度 > 重要性 加
10分。 - 对于每一个技能,当 熟练程度 < 重要性 减
5分。
- 从
仅包括每个项目的最佳候选人(最高分)。如果 相同,选择有 更小 candidate_id 的候选人。如果一个项目 没有适合的候选人,不要返回 那个项目。
返回结果表以 project_id 升序排序。
四、示例数据
输入:
Candidates表:+--------------+-----------+-------------+ | candidate_id | skill | proficiency | +--------------+-----------+-------------+ | 101 | Python | 5 | | 101 | Tableau | 3 | | 101 | PostgreSQL| 4 | | 101 | TensorFlow| 2 | | 102 | Python | 4 | | 102 | Tableau | 5 | | 102 | PostgreSQL| 4 | | 102 | R | 4 | | 103 | Python | 3 | | 103 | Tableau | 5 | | 103 | PostgreSQL| 5 | | 103 | Spark | 4 | +--------------+-----------+-------------+
Projects表:+-------------+-----------+------------+ | project_id | skill | importance | +-------------+-----------+------------+ | 501 | Python | 4 | | 501 | Tableau | 3 | | 501 | PostgreSQL| 5 | | 502 | Python | 3 | | 502 | Tableau | 4 | | 502 | R | 2 | +-------------+-----------+------------+输出:
+-------------+--------------+-------+ | project_id | candidate_id | score | +-------------+--------------+-------+ | 501 | 101 | 105 | | 502 | 102 | 130 | +-------------+--------------+-------+解释:
- 对于项目 501, 候选人 101 有最高的 105 分。所有其他的候选人有相同的分数,但候选人 101 有比他们更小的 candidate_id。
- 对于项目 502,候选人 102 有最高的 130 分。
输出表以 project_id 升序排序。
五、分析
1.文字分析
本题需求为寻找数据科学家职位的候选人:
第一步:首先获取Projects表中的所有字段以及使用count()函数计算每个项目的技能数;
第二步:将第一步结果表起别名为t0,与candidates表关联查询,获取candidate_id 、project_id,以及总评分,并对数据进行筛选,让每个人的技能数> 第一步结果中技能数的最大值,起别名为t1;
第三步:最终对t1表中数据进行排序,根据项目id:project_id分组,对score的降序、candidate_id升序进行排名,获取排名为1的相关数据即为所求。
2.图解
六、代码实现
with t0 AS (SELECT*,COUNT(*) OVER (PARTITION BY project_id) AS cnt_projectFROM projects ),t1 AS (SELECTproject_id,candidate_id,100 + SUM(CASEWHEN proficiency > importance THEN 10WHEN proficiency < importance THEN -5ELSE 0END) AS scoreFROMcandidates aJOIN t0 t ON a.skill = t.skillGROUP BY project_id, candidate_idHAVING count(*) >= max(cnt_project) ),t2 AS (SELECTproject_id,candidate_id,score,row_number() OVER (PARTITION BY project_id ORDER BY score desc ,candidate_id) as rnFROM t1 ) SELECTproject_id, candidate_id, score from t2 where rn = 1 ORDER BY project_id;
七、总结
本题需求为寻找数据科学家职位的候选人,本题需要注意的点有:
候选人必须拥有项目的所有技能,因此要对数据进行筛选;
计算每个人的评分时要注意,题目要求 分数是从100分开始的,因此要先加 100 再使用 case when 条件判断 以及 sum() 函数 进行总分数的获取;
最终根据总分数以及候选人id求得每个项目的候选排名,筛选出每个项目排名为第一的候选人即为最佳候选人。
相关文章:
力扣-Mysql-3278. 寻找数据科学家职位的候选人 II(中等)
一、题目来源 3278. 寻找数据科学家职位的候选人 II - 力扣(LeetCode) 二、数据表结构 表:Candidates ----------------------- | Column Name | Type | ----------------------- | candidate_id | int | | skill | varch…...
Android笔记(三十六):封装一个Matrix从顶部/底部对齐的ImageView
背景 ImageView的scaleType默认显示图片是这样,但是有时候设计稿需求希望图片左右能紧贴着ImageView左右边缘,又不破坏图片的比例,用自带的matrix,centerCrop等都可以满足 但是都会造成图片的某些区域被裁剪了,如果设…...
web 入门
学习 Web 开发的基础,建议从以下几个方面入门,按步骤循序渐进学习核心知识: 1. 了解 Web 的基础概念 在开始编码之前,先理解 Web 开发的基本工作原理: Web 前端与后端: 前端:负责用户界面和用…...
京东 2025届秋招 自然语言处理
文章目录 个人情况一面/HR面 10min二面/技术面 1h三面/技术面 1h四面/线下HR面 20min 个人情况 先说一下个人情况: 学校情况:211本中9硕,本硕学校都一般,本硕都是计算机科班,但研究方向并不是NLP,而是图表…...
Mybatis框架之模板方法模式 (Template Method Pattern)
MyBatis 中也使用到了 模板方法模式 (Template Method Pattern),主要体现在 执行 SQL 语句的流程控制 上。模板方法模式允许 MyBatis 定义数据库操作的标准流程,并允许子类或特定实现类去实现某些步骤。这种模式使得 MyBatis 能够在处理不同类型的 SQL 操…...
【进阶系列】python简单爬虫实例
python有一个很强大的功能就是爬取网页的信息,这里是CNBlogs 网站,我们将以此网站为实例,爬取指定个页面的大标题内容。代码如下: 首先是导入库: # 导入所需的库 import requests # 用于发送HTTP请求 from bs4 impor…...
️虚拟机配置NAT和Bridge模式
虚拟机的网络配置 桥接 通过使用物理机网卡 具有单独ip NAT 把物理机为路由器进行上网 NAT模式: 所谓nat模式,就是虚拟系统会通过宿主机的网络来访问外网,而这里的宿主机相当于有两个网卡,一个是真实网卡,一个是虚拟…...
解决Spring Boot整合Redis时的连接问题
前言 在使用Spring Boot整合Redis的过程中,经常会遇到连接问题,尤其是当Redis服务部署在远程服务器上时。 问题描述 当你尝试连接到Redis服务器时,可能会遇到以下错误: org.springframework.data.redis.connection.PoolExcept…...
109. UE5 GAS RPG 实现检查点的存档功能
在这一篇文章里,我们接着实现存档的功能,保存当前玩家的生成位置,游戏里有很多中方式去实现玩家的位置存储,这里我们采用检查点的方式,当玩家接触到当前检查点后,我们可以通过检查点进行保存玩家的状态&…...
springboot005基于springboot学生心理咨询评估系统得设计与实现。
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…...
ESC算法/逃生:一种基于人群疏散行为的优化方法
文章介绍了一种有用的算法,称为逃生或逃生算法(ESC),受人群疏散行为的启发,用于解决现实世界的案例和基准问题。ESC算法模拟了疏散过程中人群的行为,其中人群在探索阶段被分为平静、羊群和恐慌组࿰…...
构建安全的数据库环境:群晖NAS安装MySQL和phpMyAdmin详细步骤
文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文将详细讲解如何在群晖NAS上安装MySQL及其数据库管理…...
【人工智能】深入理解图神经网络(GNN):用Python实现社交网络节点分类与分子结构分析
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 图神经网络(Graph Neural Network, GNN)是近年来在深度学习领域迅速发展的新兴方向,主要用于处理图结构数据。GNN在社交网络分析、化学分…...
Qt 日志文件的滚动写入
Qt 日志文件的滚动写入 flyfish 日志文件的滚动写入功能。在日志文件达到10MB时创建新的日志文件,并且在总日志文件大小达到10GB时开始覆盖最早的日志文件 以监控一个文件夹的写日志为例 日志文件创建与管理 初始化日志文件:在FileMonitor类的构造函…...
【c语言】数据包捕获和分析工具
请解释一下数据包捕获和分析工具(如Wireshark)的工作原理和用途。 数据包捕获和分析工具,如Wireshark(前身为Ethereal),是一种网络协议分析软件,它允许用户实时监控、抓取并分析计算机网络中的网…...
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(2)(模拟实现)
1.概念介绍 1.1开散列 开散列(Open Hashing),也叫链地址法,是一种解决哈希冲突的方法。每个哈希表槽位保存一个链表,所有散列到同一位置的元素都存储在该链表中。当插入元素发生冲突时,将新元素添加到相应…...
请描述一下JVM(Java虚拟机)的生命周期及其对应用程序性能的影响
1、请描述一下JVM(Java虚拟机)的生命周期及其对应用程序性能的影响。 JVM(Java虚拟机)的生命周期主要涉及以下几个阶段:加载、验证、准备、解析、执行、卸载。每个阶段都有其特定的作用和影响。 加载:JVM…...
展会邀约|加速科技与您相约IC China 2024!
第二十一届中国国际半导体博览会( IC China 2024)将于 2024 年11月18日—11月20日在北京国家会议中心举行。加速科技将携高性能测试机ST2500EX、ST2500E、eATE及全系测试解决方案亮相E2馆B150展位。博览会期间,将同期举办"半导体产业前沿…...
鸿蒙中服务卡片数据的获取和渲染
1. 2.在卡片中使用LocalStorageProp接受传递的数据 LocalStorageProp("configNewsHead") configNewsHeadLocal: ConfigNewsHeadInfoItem[] [] 注意:LocalStorageProp括号中的为第一步图片2中的键 3.第一次在服务卡片的第一个卡片中可能会获取不到数据…...
运维篇-修复centos7无法下载docker问题
修复centos7无法下载docker问题 1、安装docker时报错2、docker无法下载镜像 1、安装docker时报错 linux的centos系统,安装docker时会报错 –> Finished Dependency Resolution Error: Package: glibc-2.17-307.el7.1.i686 (base) Requires: glibc-common 2.17…...
TEMOS
TEMOS(Text-conditioned Motion Synthesis)是2022年提出的一个文本驱动动作生成模型,核心设计是:文本编码器 动作编码器 动作解码器输入文本描述 → 生成对应的3D动作序列训练时用 KL 散度损失让文本和动作的隐空间分布对齐&…...
告别模糊:手把手教你用LAMBDA算法搞定GNSS整周模糊度(附Python代码示例)
告别模糊:手把手教你用LAMBDA算法搞定GNSS整周模糊度(附Python代码示例) 当你在开发高精度定位系统时,是否曾被整周模糊度问题困扰?这个看似简单的整数解问题,实际上影响着厘米级定位的成败。作为GNSS领域的…...
Akagi技术深度解析:开源雀魂AI辅助工具完全实战指南
Akagi技术深度解析:开源雀魂AI辅助工具完全实战指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuk…...
请解释 Linux 系统中的内核模块管理,并描述如何加载和卸载模块。
在 Linux 系统中,内核模块(Kernel Modules) 是可以在不重新编译或重启内核的情况下,动态添加到运行中内核的代码片段。它们通常用于支持新的硬件设备、文件系统或网络协议。 这种机制使得 Linux 内核保持精简(核心功能…...
豪鹏科技2025年财报透视:毛利率提升5.2个百分点,费用管控成效显著
豪鹏科技2025年财报透视:毛利率提升5.2个百分点,费用管控成效显著豪鹏科技2025年业绩表现亮眼,全年实现营业收入57亿元至60亿元,同比增长11.58%至17.45%;归母净利润1.95亿元至2.2亿元,同比大幅增长113.69%至…...
零基础教程:5个简单步骤用Mi-Create打造个性化小米手表表盘
零基础教程:5个简单步骤用Mi-Create打造个性化小米手表表盘 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create Mi-Create是一款专为小米穿戴设备用户打…...
[C语言]控制台扫雷游戏
用精简的代码,回顾数组、函数和游戏逻辑的核心应用。还记得Windows自带的扫雷吗?这次我们用C语言实现一个9x9的简易版,适合用来巩固函数封装、二维数组和随机数等知识点。1. 整体思路 扫雷的核心功能可以拆成几块: 打印菜单&#…...
快马ai一键生成:windows 11自动化部署openclaw环境原型脚本
最近在折腾Windows 11的开发环境配置,发现每次换新机器都要重复安装一堆工具链特别麻烦。正好发现了OpenClaw这个开源工具,它号称能自动化搞定开发环境部署。不过手动安装配置还是有点繁琐,于是我用InsCode(快马)平台快速生成了一个自动化安装…...
League Akari:英雄联盟玩家的终极自动化工具包
League Akari:英雄联盟玩家的终极自动化工具包 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari 是一款基于官方 LCU A…...
MediaPipe Pose镜像体验:CPU也能毫秒级检测,无需GPU免配置
MediaPipe Pose镜像体验:CPU也能毫秒级检测,无需GPU免配置 1. 引言:CPU上的实时姿态检测革命 在计算机视觉应用中,人体姿态检测一直是个热门领域。从健身应用的动作分析到虚拟试衣的体型测量,这项技术正在改变我们与…...
