SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

数据库SQL实战(牛客网):获取当前薪水第二多的员工的emp_no以及其对应的薪水salary,不准使用order by 查找当前薪水(to_date=‘9999-01-01’)排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, la... 阅读详情

1. 题目

2. 题解

注意,题目要求不能使用ORDER BY。

思路:从过滤掉最大值后的结果里面再次求最大值

子查询

# 正解
SELECT e.emp_no, s.salary, e.last_name, e.first_name
FROM employees e
  JOIN salaries s
  ON e.emp_no = s.emp_no
WHERE s.salary = (SELECT MAX(salary)
                  FROM salaries
                  WHERE salary != (SELECT DISTINCT MAX(salary) FROM salaries))

窗口函数

使用最大窗口函数(而不是排序窗口函数,规避了使用order by)一气呵成。

SELECT t.emp_no, t.salary, t.last_name, t.first_name
FROM (SELECT e.emp_no, s.salary, e.last_name, e.first_name,
             MAX(salary) OVER() max_salary
      FROM employees e 
      JOIN salaries s 
      ON e.emp_no = s.emp_no
      WHERE s.to_date = '9999-01-01'
            AND salary != (SELECT MAX(salary) FROM salaries)
     ) t 
WHERE salary = max_salary

反思:多字段聚合函数

一开始错误的做法:

# 错误:应该采用 WHERE子查询,而不是FROM 子查询
SELECT t.emp_no, t.salary, t.last_name, t.first_name
FROM (
SELECT e.emp_no, MAX(s.salary) max_salary, e.last_name, e.first_name
FROM employees e 
JOIN salaries s
ON e.emp_no = s.emp_no
WHERE s.to_date = '9999=01-01'
      AND s.salary != (SELECT MAX(salary) FROM salaries)
GROUP BY e.emp_no, e.last_name, e.first_name
) t
WHERE 。。

使用 FROM子查询,导致直接陷入死循环,没有意识到可以使用 WHERE子查询 来对字段进行限制,而不是依赖聚合函数本身。

华为昇腾Atlas 200I DK A2实战:从开箱到运行首个AI应用 本文详细介绍了华为昇腾Atlas 200I DK A2开发板从开箱到运行首个AI应用的全过程。包括硬件准备、系统烧录、开发板连接方案、AI应用运行及性能优化技巧,帮助开发者快速上手部署AI项目,提升开发效率。 阅读详情

相关推荐

OpenMV识别颜色源码

【代码】OpenMV识别颜色源码。

dxt258013的博客 403

数据库SQL实践18:获取当前薪水第二多的员工的emp_no以及其对应的薪水salary,不准使用order by

思想: 题目要求查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by。首先通过条件e.emp_no=s.emp_no将两表内连接相连,然后通过条件to_date='9999-01-01'取出员工当前薪水,再者通过子查询找出当前最高薪水select max (salary) ...

weixin_43160613的博客 533

C2000 CLA协处理器:嵌入式实时控制性能优化与实战指南

在嵌入式实时控制系统中,主CPU常因高频率、低延迟的控制算法而面临性能瓶颈。为解决此问题,协处理器技术应运而生,它通过硬件并行架构分担计算密集型任务,从而提升系统整体性能。其核心原理在于独立的计算单元与总线设计,能够实现近乎零延迟的响应,这对于电机驱动、数字电源等闭环控制场景具有极高的技术价值。本文聚焦于德州仪器C2000系列微控制器中的控制律加速器(CLA),深入解析其作为独立浮点协处理器如何通过任务调度与消息RAM通信机制,有效实现性能倍增,并提供了从内存配置到代码调试的完整工程实践方案。

weixin_29192211的博客 305

SQL212 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary (不能使用order by)

请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,

11 313

【GAMES101】现代计算机图形学入门 资料整理

课程网址 课程主页 包括ppt 课程PPT和视频 一篇搞定!GAMES101现代计算机图形学入门(全) 作业链接地址 作业论坛 GAMES101课程环境搭建(Win10+VSCode) 计算机图形学笔记 虎书pdf 提取:n2rx 【必须】:高等数学(微积分、线性代数)、算法、数据结构 【非必须】:信号处理、数值分析、大学物理(光学) 在线公式编辑器 一定要做作业,如果个人要配置环境的话应该是配置opencv,eigen这两个核心库就行了,目前觉得最核心的一个作业是作业3,实现着色器和渲染管线,做完一遍

ysh的博客 2684

HybridCLR热更新全流程实操:用Addressables实现资源+代码双热更(Unity 2021版)

本文详细介绍了在Unity 2021 LTS版本中,如何结合HybridCLR代码热更新与Addressables资源管理系统,实现资源与代码的双热更解决方案。通过环境配置、技术架构设计、实战案例和性能优化,帮助开发者解决中大型项目中的依赖管理和版本协同问题,提升游戏迭代效率。

cc789的博客 848

每日两道练习题-- 带你学会SQL server(查找最晚入职员工的所有信息,查找入职员工时间排名倒数第三的员工所有信息)

SQL Server在实际场景中的应用非常广泛,以下是一些主要的应用领域:企业级应用:SQL Server具有高度的稳定性、可靠性和安全性,非常适合用于企业级应用。例如,企业资源规划(ERP)系统、客户关系管理(CRM)系统、人力资源管理(HRM)系统等,这些系统都需要处理大量的数据和复杂的业务逻辑,SQL Server能够满足这些需求。金融系统:SQL Server支持事务和ACID特性,能够确保数据的一致性和完整性,这使得它在金融系统中有着广泛的应用。

2401_84585615的博客 659

AI测试实战:用文心一言5分钟生成登录功能测试用例(附Excel模板)

本文详细介绍了如何利用AI工具(如文心一言)在5分钟内高效生成登录功能测试用例,并提供了可直接应用的Excel模板。通过对比传统手工编写与AI生成的效率差异,展示了AI在软件测试领域的巨大优势,包括减少重复劳动、避免边界条件遗漏和提升格式标准化。文章还包含实战技巧、高级应用方案和行业最佳实践,助力测试人员快速提升工作效率。

weixin_30379531的博客 411

不用order by 选出第二个人

不用order by 选出第二个人

m0_69157845的博客 520

DA14531之如何Debug(在线调试、Jlink仿真、串口打印)

在线调试和串口打印调试。在线调试是Keil软件配合Jlink编译、烧录、仿真为一体的,其操作包括:运行、停止、打断点,单步运行等。而串口打印调试,只需打开相关配置,让arch_printf()函数正常输出串口数据。若想在初始化完成后打印arch_printf(“goto Loop\r\n”);波特率为115200,接收到串口消息goto Loop。连好线后,点击仿真按钮,在线Jlink调试。

hejinwu1314的博客 1792

SAP_PP模块中MRP中信号灯简介

一、信号灯的作用二、常见的信号灯颜色及含义三、信号灯的来源四、常见场景示例示例1:物料满足所有需求示例2:生产订单已延迟示例3:缺料或未产生计划订单五、相关事务码参考六、如何应对红色或黄色信号灯?七、前台操作说明在 SAP PP 模块中,**MRP(物料需求计划)运行结果中的“信号灯”是一种非常直观的可视化提示工具,用于帮助用户快速识别物料计划是否存在异常或需要关注的问题。这些信号灯通常出现在MD04(库存/需求清单)、MD05(单物料MRP清单)、MD07(MRP列表)**等事务代码的界面中。

我小时候很黑的博客 636

【sql】SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

题目: 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary_牛客题霸_牛客网 有一个薪水表salaries简况如下: emp_no salary from_date to_date 10001 88958 2002-06-26 9999-01-01 10002 72527 2001-08-02 9999-01-01 10003 43311 2001-12-01 9999-01-01 10004 ..

weixin_43955488的博客 595

最全面的行人重识别数据集汇总

汇总了一些REID的数据集,几乎涵盖了所有的数据集。如果有缺少的欢迎留言补充。我将能下载到的数据集放在了网盘里,链接如下:链接:https://pan.baidu.com/s/1hQ4PKvtAhAvoZiXbcIu93w 提取码:o3iyQMUL iLIDS基于iLIDS MCTS的数据集,是一个在机场繁忙时候通过监控系统中多个摄像头收集到的数据集。几乎每个ID(identity)都有从两个无重叠(区域)的摄像头拍摄的四幅图像。该数据集具有严重遮挡和姿势差异的场景。

m0_47867638的博客 1万+

牛客网 SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为: (温馨提示:sqlite通过的代码不一定能通过mysql,因为SQL语法规定,使用聚合函数时,select子句中一般只能存在以下三种元素:常数、聚合函数,group by 指定的列名。如果使用非group by的列名,sqlite的结果和mysql 可能不一样) 方法一

m0_50993967的博客 409

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

牛客网数据库SQL实战18—— 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary,不准使用order by

牛客网数据库SQL实战18—— 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary,不准使用order by 题目描述 查找当前薪水(to_date=‘9999-01-01’)排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by CREATE TABLE `employees` ( `emp_no` int(11)...

sunbocong的博客 747

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

牛客网刷题笔记-SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为: (温馨提示:sqlite通过的代码不一定能通过mysql,因为SQL语法规定,使用聚合函数时,select子句中一般只能存在以下三种元素:常数、聚合函数,group by 指定的列名。如果使

qq_39211004的博客 161

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary,last_name以及first_name,不能使用order by完成

牛客网SQl SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary,last_name以及first_name,不能使用order by完成

m0_59665373的博客 226

2021-10-09 牛客网SQL18--获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

牛客网SQL18–获取当前薪水第二多的员工的emp_no以及其对应的薪水salary 题目描述  有一个员工表employees简况如下:  有一个薪水表salaries简况如下:  请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为:(温馨提示:sqlite通过的代码不一定能通过mysql,因为SQL语法规定,使用聚合函数时,select子句中一般只能存在以下三种元素:常数、聚合函数,group by

qq_40704358的博客 131

nowcoder-sql-18- 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

select e.emp_no, s.salary, e.last_name, e.first_name from employees e inner join salaries s on e.emp_no = s.emp_no where s.to_date='9999-01-01' order by s.salary desc limit 1, 1

qq_38888209的博客 227

SQL18 查找当前薪水排名第二多的员工编号emp_no

题目描述 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,你可以不使用order by完成吗 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gend

W_H_M_2018的博客 691

18. 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary——不等于、自连接

描述 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为: (温馨提示:sqlite通过的代码不一定能通过mysql,因为SQL语法规定,使用聚合函数时,select子句中一般只能存在以下三种元素:常数、聚合函数,groupby指定的列名。如果使用非group by的列名,sqlite的结果和mysq...

renxingzhadan的专栏 180

18. 获取当前薪水第二多的员工emp_no及其对应的薪水salary,不准使用order by

题目描述 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14...

chenchenchenchenying的博客 260

题解-牛客网-SQL-(SQL18)查找当前薪水排名第二多的员工编号emp_no

文章目录1. 题目描述1.1 输入1.2 输出2. 题目分析与解答2.1 题目分析2.2 详细解答 1. 题目描述 1.1 输入 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 1.2 输出 请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为: 2. 题目分析与解答 2.1 题目分析 根据查询要求,应当先找到salaries表中第二高的薪水,再以此作为WHERE子句的

清溪醉客的博客 533

(中等)SQL练习16:统计出当前各个title类型对应的员工当前薪水对应的平均工资

SQL练习16:统计出当前各个title类型对应的员工当前薪水对应的平均工资 题目链接:牛客网 题目描述 统计出当前(titles.to_date='9999-01-01')各个title类型对应的员工当前(salaries.to_date='9999-01-01')薪水对应的平均工资。结果给出title以及平均工资avg。 CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date`

向日葵的专属太阳 2229
上一篇: SQL19 查找所有员工的last_name和first_name以及对应的dept_name
下一篇: SQL17 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值