Mysql刷题
Txixi
这个作者很懒,什么都没留下…
展开
-
力扣SQL刷题17
题目1:给定一个 salary 表,如下图所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。解题思路:1、题目要求按条件更换列中的内容,“条件”我们想到的是sql里的case表达式。2、case…when…的使用方法:case when <判断表达式> then <表达式> when <判断表达式> then <表原创 2021-04-27 16:38:41 · 244 阅读 · 0 评论 -
力扣SQL刷题16
题目1:编写一个SQL查询来重新排列Products表,以便每行都有(product\ id、store、price)。如果某个产品在商店中不可用,请不要在结果表中包含具有该产品标识和商店组合的行。解题思路:这是一个行列转换,在做这道题之前我们需要学习union和union all的操作。(1) UNIONUNION操作符用于合并两个或多个SELECT语句的结果集。注:UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同原创 2021-04-20 08:47:07 · 195 阅读 · 0 评论 -
力扣SQL刷题15
题目1:编写一个SQL查询以计算每位员工每天在办公室花费的总时间(以分钟为单位)。 请注意,在一天之内,同一员工是可以多次进入和离开办公室的。解题思路:这是一个分组求和的问题代码实现:select event_day as day,emp_id,sum(out_time-in_time) as total_timefrom employeesgroup by event_day,emp_id;结果:题目2:写一个 SQL, 报告余额高于 10000 的所有用户的名字和余额. 账户原创 2021-04-19 13:19:30 · 281 阅读 · 0 评论 -
力扣SQL刷题14
题目1:写一段SQL查询来展示每位用户的 唯一标识码(unique ID );如果某位员工没有唯一标识码,使用 null 填充即可。解题思路:这道题使用左连接,左连接在没有值的情况下自动用null填充。代码实现:select e2.unique_id as unique_id,e1.name as name from Employees e1left join EmployeeUNI e2on e1.id =e2.id ;查询结果:题目2:写一条 SQL 语句以查询那些所在院系不存原创 2021-04-18 09:56:45 · 205 阅读 · 0 评论 -
力扣SQL刷题13
题目1:写一条 SQL 语句,查询所有无效推文的编号(ID)。当推文内容中的字符数严格大于 15 时,该推文是无效的。解题思路:需要先理解char_length(str)和length(str)的区别1、char_length(str)(1)计算单位:字符(2)不管汉字还是数字或者是字母都算是一个字符2、length(str)(1)计算单位:字节(2)utf8编码:一个汉字三个字节,一个数字或字母一个字节。(3)gbk编码:一个汉字两个字节,一个数字或字母一个字节。这道题文章都是英原创 2021-04-17 15:22:13 · 363 阅读 · 0 评论 -
力扣SQL刷题12
题目1:写出 SQL 语句,查找既是低脂又是可回收的产品编号,无需考虑排序。代码实现:select product_id from Products where low_fats = 'Y' and recyclable ='Y';题目2:写出一个 SQL 查询语句,查找每种产品在各个商店中的价格。解题思路:这是一个将行转列的问题,使用group by分组计算,取每一组中对应情况的通过case when + 聚合函数(min,max,sum,avg)的结合,求出相同产品在不同商原创 2021-04-15 10:07:46 · 197 阅读 · 0 评论 -
力扣SQL刷题11
题目:编写一个 SQL 查询,找出每个部门工资最高的员工。对于下面的表,您的 SQL 查询应返回以下行(行的顺序无关紧要)。解题思路:(1)先对 DepartmentId 字段分组查询最大值,得到不同 DepartmentId 下的最大值select max(Salary),DepartmentId from Employee group by DepartmentId(2)再用DepartmentId 字段连接 Department 表,根据 Salary 和 DepartmentId原创 2021-04-14 14:41:15 · 115 阅读 · 0 评论 -
力扣SQL刷题10
题目:编写一个 SQL 查询,查找所有至少连续出现三次的数字。返回的结果表中的数据可以按 任意顺序 排列。解题思路:连续出现的意味着相同数字的 Id 是连着的,由于这题问的是至少连续出现 3 次,我们使用 Logs 并检查是否有 3 个连续的相同数字。代码实现:SELECT DISTINCT a.Num AS ConsecutiveNumsFROM Logs a, Logs b, Logs cWHERE a.Id = b.Id - 1 AND原创 2021-04-13 14:55:10 · 182 阅读 · 0 评论 -
力扣SQL刷题9
题目:编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。解题思路:窗口函数排序先要了解三个函数:rank 有并列名次的行,会占用下一名次的位置dense_rank 有并列名次的行,不占用下一名次的位置row_number 不考虑并列名次的情况根据题目要求,选择dense_rank 函数代码实现如下:select Score ,dense_rank() ove原创 2021-04-08 15:32:25 · 153 阅读 · 0 评论 -
力扣SQL刷题8
题目:编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。解题思路1:单表查询由于本题不存在分组排序,只需返回全局第N高的一个,所以自然想到的想法是用order by排序加limit限制得到。需要注意两个细节:(1)同薪同名且不跳级的问题,解决办法是用group by按薪水分组后再order by(2)排名第N高意味着要跳过N-1个薪水,由于无法直接用limit N-1,所以需先在函数开头处理N为N=N-1。注:这里不能直接用limit N-1是因为limit和原创 2021-04-07 15:45:24 · 261 阅读 · 1 评论 -
力扣SQL刷题7
题目:编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id解题思路:解决这题需要了解DATEDIFF 函数,可以计算两者的日期差;DATEDIFF('2020-12-31','2020-12-30'); # 1DATEDIFF('2020-12-30','2020-12-31'); # -1当理解了DATEDIFF后就可以查询与之前(昨天的)日期相比温度更高的所有日期的 id :SELECT b.idFROM Weather as a,Weather原创 2021-04-06 21:03:30 · 329 阅读 · 0 评论 -
力扣SQL刷题6
题目解题思路 :delete 与select语法相似(1)首先将此表与它自身在电子邮箱列中连接起来;(2)然后我们需要找到其他记录中具有相同电子邮件地址的更大 ID。所以我们可以像这样给 WHERE 子句添加一个新的条件。(3)因为我们已经得到了要删除的记录,用 DELETE语句delete p1 from Person p1 ,Person p2where p1.Email =p2.Email and p1.Id > p2.Id...原创 2021-04-01 20:39:40 · 96 阅读 · 0 评论 -
力扣SQL刷题5
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-03-31 09:06:53 · 1549 阅读 · 1 评论 -
力扣SQL刷题4
题目解题思路:select Emailfrom Persongroup by Emailhaving count(Email) > 1;注意事项 :1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。2、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。3、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用hav原创 2021-03-30 22:48:40 · 117 阅读 · 0 评论 -
力扣SQL刷题1
文章目录前言前言原创 2021-03-27 21:28:16 · 203 阅读 · 1 评论 -
力扣SQL刷题3
题目解题思路:方法一:自连接select e.Name 'Employee'from Employee e,Employee e1where e.managerId = e1.Id and e.salary > e1.salary;方法二:左连接select e.Name as Employeefrom Employee eleft join Employee e1 on e.ManagerId = e1.Id where e.Salary > e1.Salary;原创 2021-03-29 11:07:04 · 124 阅读 · 0 评论 -
力扣SQL刷题2
题目解答:(1)想要获得第二高的薪水,就需要排序使用 order by(默认是升序 asc,即从小到大),若想降序则使用关键字 desc;(2)去重,如果有多个相同的数据,使用关键字 distinct 去重;(3)判断临界输出,如果不存在第二高的薪水,查询应返回 null,使用 ifNull(查询,null)方法;(4)因为去了重,又按顺序排序,使用 limit()方法,查询第二大的数据,即第二高的薪水,即 limit(1,1) (因为默认从0开始,所以第一个1是查询第二大的数,第二个1是表示往原创 2021-03-28 09:11:38 · 139 阅读 · 0 评论