sql8&10&11&12,3+1

简介: sql8&10&11&12,3+1

简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。

SQL8 找出所有员工当前薪水salary情况

image.png我的思路: 首先筛选出题目中两个关键信息:只要薪水这一列、需要去重降序排列;按要求,我们 select salary,利用group by进行去重,order by salary desc降序排列,同时我们用where to_date = '9999-01-01'筛选出了当前还在公司的员工。

我的题解:

select salary
from salaries
where to_date = '9999-01-01'
group by salary
order by salary desc;

涉及知识点:

  • 完整sql执行顺序(每天看一遍,不信记不住):
from -> where -> group by -> having -> select -> order by -> limit
  • group by单列分组 == 去重
  • order by 列名 desc  降序排序
  • distinct也可以去重复,但是效率相比group by会低一些(数据量大时)

提交结果:

image.png

SQL10 获取所有非manager的员工emp_no

image.pngimage.png

我的思路: 在员工表employees中取出员工编号不在部门领导表dept_manager中的员工编号即可。

我的题解:

select emp_no
from employees
where emp_no not in (select emp_no
                 from dept_manager
                 )
;

涉及知识点:

  • 完整sql执行顺序(每天看一遍,不信记不住):
from -> where -> group by -> having -> select -> order by -> limit
  • where筛选+子查询
  • not in / in 可以判断一个值在不在一个集合中

提交结果:

image.png

其他题解:也是筛选思路,先将dept_manager和employees连接起来,然后筛选出部门编号为空的员工编号即可,利用group by去重。

select b.emp_no
from dept_manager as a 
right join employees as b
on a.emp_no = b.emp_no
where a.dept_no is null
group by b.emp_no
;

注意: != 和=用来判断具体的值,而NULL需要用is或者is not判断

SQL11 获取所有员工当前的manager

image.pngimage.png

我的思路: 筛选思路,先将dept_emp和dept_manager通过dept_no连接起来,并要求emp_no不相等(去除管理者),然后筛选出dept_manager中员工编号emp_no不为空对应的两表中的员工编号即可。

我的题解:

select a.emp_no, b.emp_no
from dept_emp as a
left join dept_manager as b
on a.dept_no = b.dept_no
and a.emp_no != b.emp_no
where b.emp_no is not null 
;

涉及知识点:

  • 完整sql执行顺序(每天看一遍,不信记不住):
from -> where -> group by -> having -> select -> order by -> limit
  • join 连接表

提交结果:

image.png其他题解:同样思路,可以直接join两表。

select a.emp_no, b.emp_no
from dept_emp as a
join dept_manager as b
on a.dept_no = b.dept_no
and a.emp_no != b.emp_no;

SQL12 获取每个部门中当前员工薪水最高的相关信息(困难)

image.pngimage.png

我的思路: 这里稍微有些复杂,首先需要取出的是当前每个部门中薪水最高的员工部门编号、员工编号、员工薪水,所以我们需要将dept_emp、salaries两表连接,限制to_date='9999-01-01'表示当前员工,然后where进行筛选最大薪水,这里用了一个字查询去找每个部门的最高薪水(其实就是从连接表中分组筛选出每组的最大薪水)。

我的题解:

select dept_no, emp_no, salary
from (
select a.dept_no, a.emp_no, b.salary
from dept_emp as a
join salaries as b
on a.emp_no = b.emp_no
and a.to_date='9999-01-01'
and b.to_date='9999-01-01') as a2 
where a2.salary = (
select max(b.salary)
from dept_emp as a
join salaries as b
on a.emp_no = b.emp_no
and a.to_date='9999-01-01'
and b.to_date='9999-01-01'
where a2.dept_no = a.dept_no
group by a.dept_no
)
order by dept_no
;

涉及知识点:

  • 完整sql执行顺序(每天看一遍,不信记不住):
from -> where -> group by -> having -> select -> order by -> limit
  • 子查询
  • max聚合函数
  • group by 分组,其中非group by 的列在select里出现就必须是在聚合函数里。

提交结果:

image.png

题目地址:https://www.nowcoder.com/ta/sql

相关文章
|
前端开发 JavaScript 安全
【面试题】路由的两种模式:hash模式和 history模式
【面试题】路由的两种模式:hash模式和 history模式
337 1
AOP&面向切面编程
AOP&面向切面编程
160 0
|
12月前
|
机器学习/深度学习 传感器 人工智能
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,分析了其在提高图像处理效率、准确性方面的贡献,同时指出了面临的数据依赖性、模型泛化能力不足等挑战。通过具体案例分析,文章展示了深度学习如何推动图像识别技术的发展,并对未来可能的研究方向进行了展望。
226 3
|
消息中间件 安全 Kafka
Flink与Kafka的终极联盟:揭秘如何在一瞬间切换SASL机制,保护您的数据不受黑客侵袭!
【8月更文挑战第7天】Apache Flink作为高性能流处理框架,在与Kafka集成时确保数据安全至关重要。通过配置`KafkaConsumer`使用SASL机制如SCRAM-SHA-256或PLAIN,可有效防止未授权访问。SCRAM-SHA-256采用强化的身份验证流程提高安全性,而PLAIN机制则相对简单。配置涉及设置`properties`参数,包括指定`sasl.mechanism`、`security.protocol`及JAAS认证信息。合理选择和配置这些参数对于保护Flink应用与Kafka间的数据通信安全至关重要。
433 0
|
前端开发 测试技术 数据处理
安卓开发中的MVP架构模式深度解析
【4月更文挑战第30天】在移动应用开发领域,模型-视图-呈现器(Model-View-Presenter, MVP)是一种广泛采用的架构模式。它旨在通过解耦组件间的直接交互来提高代码的可维护性和可测试性。本文将深入探讨MVP在安卓开发中的应用,揭示其如何促进代码的模块化,提升用户界面的响应性,并简化单元测试过程。我们将从理论概念出发,逐步过渡到实践案例,为读者提供一套行之有效的MVP实施策略。
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】如何向非技术受众解释LLM的概念及其能力?
【5月更文挑战第7天】【大模型】如何向非技术受众解释LLM的概念及其能力?
|
存储 缓存 网络协议
3万字总结!华三H3CNE知识点大集合,网络工程师收藏
3万字总结!华三H3CNE知识点大集合,网络工程师收藏
1191 1
|
编解码 Linux 数据格式
Linux MIPI DSI LCD设备驱动开发调试细节学习笔记(一)
Linux MIPI DSI LCD设备驱动开发调试细节学习笔记(一)
2617 0
|
存储 机器学习/深度学习 人工智能
【开卷数据结构 】图的基本介绍,不进来看看吗?
【开卷数据结构 】图的基本介绍,不进来看看吗?
454 1
|
开发框架 安全 .NET
『部署实操』使用 IIS 在 Windows 上托管 ASP.NET Core
使用 IIS 在 Windows 上托管 ASP.NET Core
1250 0
『部署实操』使用 IIS 在 Windows 上托管 ASP.NET Core

热门文章

最新文章