100天SQL面试刷题 Day005

这篇具有很好参考价值的文章主要介绍了100天SQL面试刷题 Day005。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先看题目自己试着解一下,有困难的同学可以先看考点解析试下,
最后再看SQL解答,有不同意见和解法的欢迎评论区留言交流


来源:大厂面试真题

题目:

来源:面试真题
Whose salary is higher than their manager for Month “2018-05” ? (Base on “Salary” table)
table:Salary

EmployeeID ManagerID Salary Month
1001 1003 2000 2018-05
1002 1003 2500 2018-05
1003 1004 2250 2018-05
1004 1005 3000 2018-05
1001 1003 1500 2018-06
1002 1003 1500 2018-06
1003 1004 1050 2018-06
1004 1005 2400 2018-06

题目数据下载

结果输出

100天SQL面试刷题 Day005,MYSQL面试刷题,sql,面试,数据库

考点解析

表的自连接,内连接,左连接和where条件筛选

逻辑口述:

每个人都是员工也可能是另一个员工的经理,用managerID 和EmployeeID 去管理,得到不同经理的工资,然后去做比较即可文章来源地址https://www.toymoban.com/news/detail-524217.html

SQL代码

# 方法一 自连接
SELECT 
s1.EmployeeID, s1.ManagerID,
s1.Salary Salary_Employee,
 S2.Salary Salary_Manager,S1.`Month` 
 FROM salary s1,salary s2 
where s1.ManagerID = s2.EmployeeID
and s1.`Month` = s2.`Month`
and s1.`Month` = "2018-05"
and s1.Salary > S2.Salary;

# 方法二  inner自连接
SELECT 
s1.EmployeeID,
s1.ManagerID,
s1.Salary  Salary_employee,
s2.Salary  Salary_Manager,
S1.`Month`
 FROM salary s1
inner join  salary s2
on s1.ManagerID = S2.EmployeeID
and s1.`Month` = s2.`Month`
where s1.`Month` = "2018-05"
having Salary_employee > Salary_Manager
--having也可以写在where 里 and s1.Salary > s2.Salary;

# 方法三 左连接
SELECT * FROM salary s1
left join 
(select distinct EmployeeID,Salary,`Month` from salary) s2
on s1.ManagerID = S2.EmployeeID
and s1.`Month` = s2.`Month`
where s1.`Month` = "2018-05";

到了这里,关于100天SQL面试刷题 Day005的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL面试必备:100道高频考题解析

    前言 在众多IT职场中,SQL技术一直是一个非常重要的技能点。如果你正在准备SQL相关的面试,那么这份“SQL面试 100 问”绝对是你不能错过的宝藏! 这份清单涵盖了100道高频考题,从基础知识到复杂应用都有所涉及,帮助你全面掌握SQL面试必备技能,轻松应对各种挑战。 同时

    2024年02月06日
    浏览(68)
  • ChatGPT实战100例 - (08) 数据库设计转化为SQL并获取ER图

    在你还在手撸SQL?ChatGPT笑晕在厕所 这篇博文中 针对经典3表设计: 学生表 S(SNO,SNAME,AGE,SEX),其属性表示学生的学号、姓名、年龄和性别; 选课表 SC(SNO,CNO,GRADE),其属性表示学生的学号、所学课程的课程号和成绩; 课程表 C(CNO,CNAME,TEACHER),其属性表示课程

    2024年02月10日
    浏览(48)
  • AI面试官:SQL Server数据库(三)

    当涉及到.NET工程师中关于SQL Server数据库的面试题时,主要考察候选人的数据库知识、SQL查询能力、数据库设计和优化等方面。 解答:数据库并发控制是为了确保多个用户同时访问数据库时,数据的一致性和正确性。常见的数据库并发控制机制包括锁机制、事务隔离级别和乐

    2024年02月14日
    浏览(42)
  • AI面试官:SQL Server数据库(一)

    当涉及到.NET工程师中关于SQL Server数据库的面试题时,主要考察候选人的数据库知识、SQL查询能力、数据库设计和优化等方面。 解答:数据库是用于存储和管理数据的集合。数据库管理系统 (DBMS) 是一种软件,用于管理数据库的创建、查询、更新和删除等操作。数据库系统指

    2024年02月14日
    浏览(42)
  • AI面试官:SQL Server数据库(二)

    当涉及到.NET工程师中关于SQL Server数据库的面试题时,主要考察候选人的数据库知识、SQL查询能力、数据库设计和优化等方面。 解答:数据库锁是用于管理并发访问数据库的机制,它可以确保在同一时刻只有一个事务可以修改共享数据,从而避免数据的不一致性和冲突。常见

    2024年02月14日
    浏览(44)
  • 【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

    目录  专栏导读  1 MySQL概述 2 MySQL下载安装 2.1 下载  2.2 安装 2.3 配置

    2024年02月12日
    浏览(49)
  • 主流数据库(SQL Server、Mysql、Oracle)通过sql实现多行数据合为一行

    1、方法一:使用 STUFF 和 FOR XML PATH 进行多行合并成一行 (1)FOR XML PATH用法 FOR XML 是 SQL Server 提供的一种功能,允许您将查询结果转换为 XML 格式。 PATH 模式则是其中一种灵活的方式来构造自定义的XML结构。 1、基本字符串连接 : 当您想从单列中提取所有行的数据并连接成一

    2024年04月10日
    浏览(65)
  • 【MySQL数据库】MySQL 高级SQL 语句一

    ) % :百分号表示零个、一个或多个字符 _ :下划线表示单个字符 ‘A_Z’:所有以 ‘A’ 起头,另一个任何值的字符,且以 ‘Z’ 为结尾的字符串。例如,‘ABZ’ 和 ‘A2Z’ 都符合这一个模式,而 ‘AKKZ’ 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。 ‘ABC%’

    2024年02月09日
    浏览(251)
  • 【MySQL 数据库】7、SQL 优化

    ① 批量插入数据 ② 手动控制事务 ③ 主键顺序插入,性能要高于乱序插入 主键乱序插入 : 8 1 9 21 88 2 4 15 89 5 7 3 主键顺序插入 : 1 2 3 4 5 7 8 9 15 21 88 89 【☆】 】 ① 如果需要一次性插入大批量数据(百万级别),使用 insert 语句插入性能 很低 ② 可使用 MySQL 数据库提供的 loa

    2024年02月08日
    浏览(60)
  • 【数据库】MySQL 高级(进阶) SQL 语句

    location表格创建 store_info表格创建 显示表格中一个或数个字段的所有数据记录 不显示重复的数据记录 按照条件进行查询 在已知的字段数据取值范围内取值 另外还有not in命令,用法一致,表示显示不在指定范围内的字段的值。 在两个字段数据值之间取值,包含两边字段的数据

    2024年02月09日
    浏览(137)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包