leetcode题集训 sql

目录

  • 背景
  • 步骤
    • 175组合两个表(多表联查)
    • 176 177 第n高的薪水(Distinct关键字 排序)
    • 178分数排名 (排序 order over关键字)
    • 179 连续出现的数字 (模拟多张表联查)
    • 181. 超过经理收入的员工 (两表联查)
    • 182 查找重复的电子邮箱(group by)
    • 183 从不订购的客户(两表联查)
    • 184部门最高工资员工(两表联查 max函数 )
    • 196删除重复的电子邮箱(group not in)
    • 197上升温度(datediff)
    • 511 游戏玩法分析
  • 总结

背景

虽然现在chatGPT很大程度上满足了大家的需要,但是写sql还是咱们程序员必不可少的部分啊
于是我参加了这次SQL集训。下面就让我们看看有什么题给我留下了很深的印象吧。

步骤

175组合两个表(多表联查)

1、多表联查
在这里插入图片描述`


SELECT p.FirstName, p.LastName,a.City,a.State
FROM person p  left JOIN address  a
ON p.personid = a.personid

176 177 第n高的薪水(Distinct关键字 排序)

掌握Distinct关键字

编写一个SQL查询来报告 Employee 表中第 n 高的工资。如果没有第 n 个最高工资,查询应该报告为 null 。
在这里插入图片描述

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
       select (
          select distinct salary from (
              select salary, dense_rank() over (order by salary desc) rnk from employee
          )t
          where rnk=N
      )getNthHighestSalary
      
  );
END

178分数排名 (排序 order over关键字)

编写 SQL 查询对分数进行排序。排名按以下规则计算:

分数应按从高到低排列。
如果两个分数相等,那么两个分数的排名应该相同。
在排名相同的分数后,排名数应该是下一个连续的整数。换句话说,排名之间不应该有空缺的数字。

在这里插入图片描述

select score,dense_rank() over (order by score desc) as 'rank'
from Scores

179 连续出现的数字 (模拟多张表联查)

编写一个 SQL 查询,查找所有至少连续出现三次的数字。

返回的结果表中的数据可以按 任意顺序 排列。

查询结果格式如下面的例子所示:
在这里插入图片描述
有点不是很明白

# Write your MySQL query statement below

SELECT DISTINCT l1.Num AS ConsecutiveNums 
FROM Logs AS l1, Logs AS l2, Logs AS l3
WHERE l1.id=(l2.id +1) AND l2.id = (l3.id+1) AND l1.Num = l2.Num AND l2.Num = l3.Num

where 后是三张表进行联查,因为说了是连续 l1.id=(l2.id +1) AND l2.id = (l3.id+1),说了是数字相等 l1.Num = l2.Num AND l2.Num = l3.Num

181. 超过经理收入的员工 (两表联查)

编写一个SQL查询来查找收入比经理高的员工。
在这里插入图片描述


select 
    e1.name as `Employee`
from 
Employee e1
join   Employee  e2
on    e1.managerId = e2.id and e1.salary >e2.salary

182 查找重复的电子邮箱(group by)

在这里插入图片描述

编写一个 SQL 查询来报告所有重复的电子邮件。 请注意,可以保证电子邮件字段不为 NULL。

select Email from (
    select  Email,count(Id)as num
    from person
    group by Email
)as tmp 
where tmp.num >1

183 从不订购的客户(两表联查)

在这里插入图片描述
某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。

select Name  Customers  
from Customers  c 
 left join Orders o  
 on   o.CustomerId = c.Id 
where o.Id is null

184部门最高工资员工(两表联查 max函数 )

编写SQL查询以查找每个部门中薪资最高的员工。
按 任意顺序 返回结果表。
在这里插入图片描述

select 
    d.Name as Department,
    e.Name as Employee,
    e.Salary 
from 
    Employee e,Department d 
where
    e.DepartmentId=d.id 
    and
    (e.Salary,e.DepartmentId) in (select max(Salary),DepartmentId from Employee group by DepartmentId);

196删除重复的电子邮箱(group not in)

编写一个 SQL 删除语句来 删除 所有重复的电子邮件,只保留一个id最小的唯一电子邮件。

以 任意顺序 返回结果表。 (注意: 仅需要写删除语句,将自动对剩余结果进行查询)

在这里插入图片描述

DELETE 
from Person 
Where Id not in (
    Select Id 
    From(
        Select MIN(Id) as id
        From Person 
        Group by Email
   ) t
)

197上升温度(datediff)

编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。在这里插入图片描述

select w1.id id
from weather w1
where w1.temperature > (
    select w2.temperature
    from weather w2
    where datediff(w1.recordDate, w2.recordDate) = 1
)

511 游戏玩法分析

写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期。
在这里插入图片描述

select player_id,min(event_date) first_login
from activity
group by player_id

总结

虽然练习sql有很多好处,但是我们不得不意识到chatGPT就能解决这些事情,但是我们也要会写(会写但是不写),不然以后得低水平工作机会都是全能的GPT啦~

熟悉SQL语言:SQL是关系型数据库管理系统(RDBMS)的标准查询语言,学习和练习SQL可以帮助您熟悉这种语言的语法和结构。掌握SQL可以使您更有效地查询、修改和管理数据库。

数据库管理技能:SQL是访问和管理关系型数据库的关键工具。通过SQL练习,您将学习如何创建和管理数据库、定义表结构、插入、更新和删除数据,以及执行高级查询和优化操作。这些技能对于数据库管理、数据分析和软件开发非常重要。

数据分析和报告:SQL是数据分析的重要工具之一。通过使用SQL查询,您可以从数据库中提取所需的数据,进行各种聚合和计算,生成有关数据的报告和可视化结果。这对于业务分析、决策支持和报告编制非常有帮助。

职业发展:SQL是广泛使用的技能,对于从事数据管理、数据分析、软件开发和相关领域的专业人士来说,具备SQL技能是非常有竞争力的优势。通过练习SQL,您可以提高自己在职场中的市场价值,并为职业发展打下坚实的基础。

效率和准确性:使用SQL查询可以更快速、更准确地访问和处理大量数据。通过练习SQL,您可以学习和应用各种查询技巧和优化策略,从而提高数据处理效率和准确性。

锻炼逻辑思维:SQL查询涉及到逻辑思维和问题解决能力。通过练习SQL,您将锻炼自己的逻辑思维能力,学习如何将问题转化为有效的SQL查询,提高自己的解决问题的能力。

掌握常用工具:SQL是许多流行数据库管理系统的标准语言,包括MySQL、Oracle、Microsoft SQL Server等。通过进行SQL练习,您将熟悉和掌握这些常用数据库管理系统的操作和工具,为实际项目开发和工作做好准备。

总的来说,SQL练习可以帮助您熟悉SQL语言、提高数据库管理和数据分析技能、促进职业发展,并锻炼逻辑思维能力。无论您是初学者还是有经验的开发人员,进行SQL练习都是非常有益

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33554.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP/IP协议是什么?

78. TCP/IP协议是什么? TCP/IP协议是一组用于互联网通信的网络协议,它定义了数据在网络中的传输方式和规则。作为前端工程师,了解TCP/IP协议对于理解网络通信原理和调试网络问题非常重要。本篇文章将介绍TCP/IP协议的概念、主要组成部分和工…

Elasticsearch:使用 SIMD 指令加速向量搜索

作者:Chris Hegarty, Elastic Principal Engineer, Lucene PMC 翻译:杰瑞朱 多年来,Java 平台上运行的代码一直受益于自动向量化 —— HotSpot C2 编译器中的 superword 优化,将多个标量操作打包到 SIMD(单指令多数据…

Git:git merge和git rebase的区别

分支合并 git merge是用来合并两个分支的。比如:将 b 分支合并到当前分支。同样git rebase b,也是把 b 分支合并到当前分支。他们的 「原理」如下: 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支…

【react全家桶学习】react的 (新/旧) 生命周期(重点)

目录 生命周期(旧) 挂载时的生命周期 constructor(props) componentWillMount()-------------新生命周期已替换 render() componentDidMount()--- 组件…

PACS/RIS医学影像管理系统源码 提供先进图像处理和算法

PACS(医学影像存档与通信系统)主要应用于医学影像的存储、传输和显示。它可以使医生突破胶片的局限,对病人的影像进行全方位的处理和观察,以便得出更准确的诊断。同时,PACS可以节省大量的胶片,降低成本。医…

flex布局瀑布流占位两边对齐不对称

.page{display: flex;justify-content: space-between;flex-wrap: wrap; }.page:after {content: ;width: 400px; // 也可以 flex:1}

jmeter:BeanShell预处理程序获取/设置/引用变量

BeanShell预处理程序 1、局部变量 获取局部变量:vars.get("变量名") 设置局部变量:vars.put("变量名",变量值) 调用 ${变量名} 2、全局变量 获取局部变量:props.get("变量名") 设置局部变量&#xff1a…

KNIME工作流和节点比较功能

KNIME工作流和节点比较功能是一个在 << KNIME 视觉化数据分析 >> 中没有讲到的知识点。 KNIME工作流和节点比较功能在以下几种情况下非常有用&#xff1a; 版本控制&#xff1a;此功能可以跟踪工作流和节点中的更改。如果需要返回到之前的工作流或节点版本&#xf…

Vscode platformio Arduino开发STM32,点灯+串口调试

1.工具 USB-TTL(非常便宜&#xff0c;几块钱)STM32F103C8T6(几块钱) 2.引脚连线 USB-TTLSTM32TXPA10RXPA9VCC3.3VGNDGND 注意事项&#xff1a; 跳线帽位置&#xff1a;BOOT0接高电平(1)&#xff0c;BOOT1接低电平(0)每次上传程序前需要按一下复位键(之后&#xff0c;跳线帽…

2020年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&#xff0c;题目常常看&a…

Nginx SSL使用自制证书

1. 生成证书 keytool -genkey -v -alias <Alias别名> -keyalg RSA -keystore <KeyStore文件> -validity <有效期> keytool -genkey -v -alias nginx -keyalg RSA -keystore nginx.keystore -validity 36500 alias别名为 nginxkeystore文件为 nginx.keystore…

【Nginx】第七章 Nginx原理与优化参数配置

7.1 Nginx原理 master-workers的机制的好处 首先&#xff0c;对于每个worker进程来说&#xff0c;独立的进程&#xff0c;不需要加锁&#xff0c;所以省掉了锁带来的开销&#xff0c;同时在编程以及问题查找时&#xff0c;也会方便很多。 其次&#xff0c;采用独立的进程&…

第11节 跟上板块轮动的节奏

板块 文章目录 板块什么是板块板块的分类板块的轮动 板块相关接口本节课任务 什么是板块 股票板块是一些具有相同特征的股票的集合&#xff0c;命名通常也会简单明了的直接按照特征命名。例如沪深300板块&#xff0c;蓝筹板块。对上市公司进行“分班”不论是对于企业还是对于投…

Restful风格笔记

Restful风格知识点 RestController注解 在类上添加RestController可以默认类中的所有方法都带有ResponseBody注解&#xff0c;可以省去一个个添加的麻烦。 RestController RequestMapping("/restful") //CrossOrigin(origins {"http://localhost:8080"…

Linux系统Centos7 安装MySQL8.0详细步骤

MySql安装 1.下载wget命令 yum -y install wget 2. 在线下载mysql安装包 wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm 3.MySQL的GPG升级了&#xff0c;需要更新&#xff0c;如果是新安装的MySQL&#xff0c;执行以下脚本即可&#xff1…

Python MongoDB复习第一章

Python 可以在数据库应用程序中使用。 最受欢迎的 NoSQL 数据库之一是 MongoDB。 MongoDB MongoDB 将数据存储在类似 JSON 的文档中&#xff0c;这使得数据库非常灵活和可伸缩。 为了能够测试本教程中的代码示例&#xff0c;您需要访问 MongoDB 数据库。 您可以在 https:/…

Vue.js中的状态管理:理解和使用Vuex

目录 前言 Vue.js 样式绑定 Vue.js class class 属性绑定 实例 1 实例 2 实例 3 实例 4 数组语法 实例 5 实例 6 Vue.js style(内联样式) 实例 7 实例 8 实例 9 Vue.js 组件 全局组件 全局组件实例 局部组件 局部组件实例 Prop Prop 实例 动态 Prop Pro…

力扣 98. 验证二叉搜索树

题目来源&#xff1a;https://leetcode.cn/problems/validate-binary-search-tree/description/ C题解1&#xff1a;中序遍历&#xff0c;递归法。获取数组&#xff0c;如果是递增则返回true&#xff0c;否则返回false。 class Solution { public:void zhongxu(TreeNode* node…

vue+leaflet笔记之热力图

vueleaflet笔记之热力图 文章目录 vueleaflet笔记之热力图开发环境代码简介插件简介与安装使用简介 详细源码(Vue3) 本文介绍了Web端使用 Leaflet开发库展示热力图方法 (底图来源:天地图)&#xff0c;结合leaflet.heat插件可以很容易的做出热力图&#xff0c;通过调整其配置参…

房贷计算器——新增选择还款方式

房贷计算器——新增选择还款方式 #!/usr/bin/env python # coding: utf-8# In[4]: 文字‘房贷计算器’ 文字‘贷款总金额’&#xff1a;输入框 文字‘贷款期限’&#xff1a;输入框 文字‘年利率’&#xff1a;输入框 按钮‘开始计算’ 返回&#xff1a; 月供 总利息 from tki…