IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> sql练习看这里,你想要的这里都有 -> 正文阅读

[大数据]sql练习看这里,你想要的这里都有

一.基本知识点

Mysql中的连接分为四种种:内连接(inner join),全连接(full join),左连接(left join)和右连接(right join)
左右连接区别:
A left join B 的连接的记录数与A表的记录数同 ,也就是说包含A表的所有行,即使在右表中没有匹配的记录
A right join B 的连接的记录数与B表的记录数同 ,也就是说包含B表的所有行,即使在左表中没有匹配的记录
内连接和外连接区别:
inner join 就等于 join ,也称为等值连接,返回两张表都满足条件的部分
全连接是A表的所有行并上B表的所有行得出的结果集

二.leetcode实例

题目列表:
在这里插入图片描述

175. 组合两个表(简单)

在这里插入图片描述
SQL语句:
在这里插入图片描述

176. 第二高的薪水

题目如下:
在这里插入图片描述
SQL编写:
在这里插入图片描述
IFNULL函数
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。语法格式如下:IFNULL(expression, alt_value)。
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的值alt_value。

limit和offset用法
mysql里分页一般用limit来实现

  1. select * from student limit 1,3;
    如果limit后面跟两个参数,第一个参数表示要跳过的数量,第二个表示要读取的数量。这里表示跳过第一条记录,读取2,3,4条记录。
  2. select * from student limit 3;
    如果limit后面跟一个参数,指要读取多少条数据。这里表示直接读取前三条记录。
  3. select * from student limit 1 offset 2;
    如果limit和offset结合使用,offset后的表示要跳过几条数据,limit后面表示要取几条数据。这里表示跳过两条数据,取一条数据,也就是读取第3条记录。

DISTINCT:
在表中,可能会包含重复值,关键词 DISTINCT 用于返回唯一不同的值。也就是说,相同的值只会被在结果集中被列出一次。

这道题首先根据distinct关键字进行了去重,然后根据Salary将查询的记录进行了一个降序排序,之后用到IFNULL函数,如果表中只有一行记录,那么就不会有第二高的值,这时返回第二个值NULL;如果存在第二高的值就返回查询到的值,limit 1 offset 1,跳过最高的值,取第二行的记录,也就是第二高的值。

其实这个题目还有第二种sql写法,如下:
在这里插入图片描述
但是不能写成如下的模式:
在这里插入图片描述
有的同学可能就疑惑了,这两种sql语句不是一样的吗,为什么第二种不行?首先说下这两种区别,第二种是直接查询,第一种是将查询的结果作为一个临时表然后对临时表进行查询。下面直接去数据库看看两者运行的结果有什么不同。
如下图,把age当做本题的salary,可以看到只有一条记录,是不存在第二高的值
在这里插入图片描述
如下图,第一种方式的查询结果为NULL
在这里插入图片描述
如下图,是用第二种方式查询的,没有用到临时表,虽然没有报错,但是什么都查不出来,也不会返回NULL
在这里插入图片描述
本题中很明确的提示了,如果不存在第二高的薪水,那么查询应返回 null,所以只能用采用临时表的那种方式,或者IFNULL函数的。

177. 第N高的薪水

题目:该题和上面一题的思想一样
在这里插入图片描述
SQL编写:
在这里插入图片描述

178. 分数排名

题目即思路:
在这里插入图片描述
SQL语句编写:
在这里插入图片描述

180. 连续出现的数字

题目:
在这里插入图片描述
SQL语句编写:
在这里插入图片描述
思路:
从题目中可以看到,我们要得到的是连续出现过三次或者三次以上的数字,所以可以用三个表来找。当三个id连续,且Num值相等时,输出这个Num值,但是如果有四个id连续且Num值相等,那输出的结果有两个相等的Num,这不是我们想要的,我们期待的是输出一个就可以了,所以用distinct关键字去重

184. 部门工资最高的员工

题目:
在这里插入图片描述
SQL编写:
在这里插入图片描述
思路:
先根据DepartmentId分组找到每组中工资的最高值,然后查询两张表Department,Employee,当只有当部门Id是当前部门,工资和当前部门中最高值相等才输出。

185. 部门工资前三高的所有员工

题目:
在这里插入图片描述
SQL编写:
在这里插入图片描述

196. 删除重复的电子邮箱

题目:
在这里插入图片描述
SQL代码编写:
在这里插入图片描述

197. 上升的温度

题目:
在这里插入图片描述
SQL编写:
在这里插入图片描述
知识点:
DATEDIFF() 函数返回两个日期之间的天数。如果date1比date2大,那么datediff(date1,date2) = 1 就是指date1和date2相差一天,如果写成反了,datediff(date2,date1),那么结果就为-1了

183. 从不订购的客户

题目:
在这里插入图片描述
sql编写:
在这里插入图片描述
知识点:
in:表示在什么范围中
on:一般用作连接两个表的

181. 超过经理收入的员工

题目和sql语句如下图:
在这里插入图片描述

182. 查找重复的电子邮箱

题目与答案:
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:21:27  更:2021-09-29 10:23:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:53:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码