SQL架构

表: Candidates

+-------------+------+
| Column Name | Type |
+-------------+------+
| employee_id | int  |
| experience  | enum |
| salary      | int  |
+-------------+------+
employee_id是此表的主键列。
经验是包含一个值(“高级”、“初级”)的枚举类型。
此表的每一行都显示候选人的id、月薪和经验。

一家公司想雇佣新员工。公司的工资预算是 70000 美元。公司的招聘标准是:

  1. 雇佣最多的高级员工。
  2. 在雇佣最多的高级员工后,使用剩余预算雇佣最多的初级员工。

编写一个SQL查询,查找根据上述标准雇佣的高级员工和初级员工的数量。
按 任意顺序 返回结果表。
查询结果格式如下例所示。

示例 1:

输入:
Candidates table:
+-------------+------------+--------+
| employee_id | experience | salary |
+-------------+------------+--------+
| 1           | Junior     | 10000  |
| 9           | Junior     | 10000  |
| 2           | Senior     | 20000  |
| 11          | Senior     | 20000  |
| 13          | Senior     | 50000  |
| 4           | Junior     | 40000  |
+-------------+------------+--------+
输出:
+------------+---------------------+
| experience | accepted_candidates |
+------------+---------------------+
| Senior     | 2                   |
| Junior     | 2                   |
+------------+---------------------+
说明:
我们可以雇佣2名ID为(2,11)的高级员工。由于预算是7万美元,他们的工资总额是4万美元,我们还有3万美元,但他们不足以雇佣ID为13的高级员工。
我们可以雇佣2名ID为(1,9)的初级员工。由于剩下的预算是3万美元,他们的工资总额是2万美元,我们还有1万美元,但他们不足以雇佣ID为4的初级员工。

示例 2:

输入:
Candidates table:
+-------------+------------+--------+
| employee_id | experience | salary |
+-------------+------------+--------+
| 1           | Junior     | 10000  |
| 9           | Junior     | 10000  |
| 2           | Senior     | 80000  |
| 11          | Senior     | 80000  |
| 13          | Senior     | 80000  |
| 4           | Junior     | 40000  |
+-------------+------------+--------+
输出:
+------------+---------------------+
| experience | accepted_candidates |
+------------+---------------------+
| Senior     | 0                   |
| Junior     | 3                   |
+------------+---------------------+
解释:
我们不能用目前的预算雇佣任何高级员工,因为我们需要至少80000美元来雇佣一名高级员工。
我们可以用剩下的预算雇佣三名初级员工。
with t1 as (select
employee_id,experience,salary,sum(salary) over(partition by experience order by salary rows between unbounded preceding and current row) so
#按 experience 分组开窗,按salary 生序排列逐一求和   然后 <=70000 就是能招聘的 员工
from
Candidates
),
t2 as (
select
"Senior" experience,count(employee_id) accepted_candidates,70000-ifnull(max(so),0) m   # 能招聘的 Senior 等级员工
from
t1
where
experience = "Senior" and so<=70000)select
experience,accepted_candidates
from
t2
union all #上下两表拼接 就是题中需求
select
"Junior" experience,count(employee_id) accepted_candidates # 能招聘的 Junior 等级员工
from
t1
where
experience = "Junior" and so<=(select m from t2)

笔记:

注意:

select
"Junior" experience,count(employee_id) accepted_candidates # 能招聘的 Junior 等级员工    
from
t1
where
experience = "Junior" and so<=(select m from t2)

第一列 固定 输出 "Junior"   为了保证  where 条件筛选不出任何内容时  也能 正常输出内容 
"Junior"  0   (  count(null) =>0 )

2004. 职员招聘人数相关推荐

  1. 任正非:明年应届生招聘人数至少8000人

    11月1日消息,华为心声社区"华为家事"刊发了近日任正非的最新讲话.此次讲话发表于研发应届生招聘座谈会上,主题是"人才很关键,面试最重要". 任正非在讲话中表示 ...

  2. 计算机招聘网站排名,2014年互联网名企招聘人数的高校

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 盘点:2014年互联网名企招聘人数排名前十学校 2014-08-06 11:14 谷歌 1.清华大学 2.北京邮电大学 3.北京大学 4.上海交通大学 5 ...

  3. springboot网络招聘服务系统毕业设计源码121727

    目  录 摘要 1 绪论 1.1开发的意义及背景 1.2国内研究现状 1.3系统开发技术的特色 1.4论文结构与章节安排 2网络招聘服务系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2. ...

  4. 任正非:明年至少招聘 8000 名应届生,华为人才将分为三类

    整理 | 王晓曼 出品 | 程序人生 (ID:coder _life) 2020年10月27日,华为创始人兼CEO 任正非在研发应届生招聘座谈会上发表了题为<人才很关键,面试很重要>的讲话 ...

  5. 微软公司2007年秋季校园招聘在线宣讲会

    微软公司2007年秋季校园招聘在线宣讲会 系统公告:感谢大家对微软公司的关注!本次校园招聘在线宣讲会将于19:00准时开始,请各位同学耐心等待.(18:35:54) John Liu 说:大家好晚上好 ...

  6. 阿里巴巴集团--软件测试--《社招、校招jd、公司具体介绍,校园招聘公告,应届生招聘流程,技术培训,薪资福利》整理

    阿里巴巴集团 终极目标 目录 社招jd 校招jd 附件(公司具体介绍,校园招聘公告,应届生招聘流程,技术培训,薪资福利) 阿里巴巴社招:https://job.alibaba.com/zhaopin/ ...

  7. asp毕业设计——基于asp+access的在线人才招聘网设计与实现(毕业论文+程序源码)——人才招聘网

    基于asp+access的在线人才招聘网设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的在线人才招聘网设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

  8. 2019校园招聘 ——百度、京东、苏宁等产品经理面试经验总结

    写在前面:于我而言,秋招终于结束了!颠沛流离了4个月,无论中间的过程多么坎坷,经历了多少的彷徨.茫然与自我怀疑,最终还是斩获了一份比较满意的offer,也算是给自己的努力一个交代吧.宏观上,今年的经济 ...

  9. 银行招聘考试怎么备考

    1.招聘条件 各地地区,各大银行的招聘条件各有不同,但总结起来无外乎以下几个基本条件: 1.学历:全日制本科以上学历;硬性标准,非常严格,如果写明招硕士,那硕士以下的基本就不考虑了.另外,很多银行都写 ...

  10. 兰州有没有招聘关于计算机专业的,2016年兰州市直招聘事业单位人员岗位表

    招聘单位 地址 经费来源 岗位 代码 岗位 类别 岗位名称 招聘 人数 招聘条件 学历 年龄 专业 技术任职 资格 执业资格证件 其他要求 兰州市人大培训中心 兰州市金昌北路75号 自收自支 5001 ...

最新文章

  1. SQL语句中order_by_、group_by_、having的用法区别
  2. string 转 int_面试官:String长度有限制吗?是多少?还好我看过
  3. 关于 Apache Maven 您不知道的 5 件事
  4. KVM安装、镜像创建(一)
  5. 火种 ctf_分析我的火种数据
  6. 前端学习(2998):vue+element今日头条管理--element引入
  7. 常见的算法面试问题以及代码实现
  8. 使用matplotlib画图时不能同时打开太多张图
  9. 对有些反编译不成功的apk,请更新最新的apktool.jar、 dex2jar试试
  10. 数值分析复习(六)——常微分方程数值解法
  11. 进军杀毒市场!百度杀毒软件2013正式发布
  12. 《机器学习算法竞赛实战》学习笔记1.竞赛简介
  13. 空洞卷积(扩张卷积dilated convolution)
  14. vue 关于数组的固定随机排序
  15. Flink中的Window计算-增量计算全量计算
  16. 服务器运维工程师岗位要求
  17. 【人性】豆豆三部曲之《背叛》、《遥远的救世主》和《天幕红尘》
  18. 使用wxjava实现发表内容、预览信息以及推送文章
  19. 无法安装网络计算机加密,非系统分区使用BitLocker加密导致软件无法安装的解决方法...
  20. 让笔记本触摸板默认关闭

热门文章

  1. 如何用计算机校验信息,Win10如何校验文件哈希值(系统自带方法)?
  2. 知识图谱的相关技术-概览(笔记)
  3. 使用Ryu实现交换式集线器(Switching hub)
  4. 分享qq空间出现失败
  5. 获取微信小程序二维码后返回一堆乱码
  6. 笔记十一:提升高效技术领导的创新能力
  7. java存根_如何在JUnit和Java中使用存根?
  8. 企业网站推广的方法有哪些?
  9. 安全删除硬件并弹出媒体的列表中出现内置硬盘的解决办法.
  10. pixi 小游戏_学习如何用pixi.js开发微信小游戏