力扣数据库题库学习(4.23日)

610. 判断三角形

问题链接
问题图片

解题思路

题目要求:对每三个线段报告它们是否可以形成一个三角形。以 任意顺序 返回结果表。
对于三个线段能否组成三角形的判定:任意两边之和大于第三边,对于这个表内的记录,要求就是(x+y>z,x+z>y,y+z>x)。再看最后生成的结果,需要生成一个新字段triangle
这个很简单,我们使用case语句即可搞定

SELECT x,y,z,
CASE
    WHEN x+y>z AND x+z>y AND y+z>x THEN "Yes"
    ELSE "No"
END AS triangle
FROM Triangle;

619. 只出现一次的最大数字

问题链接
问题图片

解题思路

找出最大的 单一数字 。如果不存在 单一数字 ,则返回 null 。
这个问题解题步骤就是先找到表内的单一数据集【没有就返回null】,并从单一数据集内提取出最大的数据。
解题思路很简单:

  1. 找到单一数据集合
    根据num数据分组,找到COUNT(num)为1的数据集合
  2. 使用查询语句,从数据集合内使用MAX函数提取最大的数据

代码如下:

SELECT MAX(num) AS num FROM 
(SELECT num FROM MyNumbers
GROUP BY num
HAVING COUNT(num)=1) AS unique_nums;

620. 有趣的电影


问题链接

问题图片

解题思路

题目要求:编写解决方案,找出所有影片描述为 非 boring (不无聊) 的并且 id 为奇数 的影片。返回结果按 rating 降序排列。
我觉得这个题目考的就是根据字段关键词反向匹配,正向匹配还有排序。这里我们可以来构造匹配条件
非 boring :description !=“boring”
id 为奇:id % 2 != 0
排序:ORDER BY rating DESC
sql语句如下:

SELECT * FROM cinema WHERE description !="boring" AND id  % 2 != 0
ORDER BY rating DESC
;

627. 变更性别

问题链接
问题图片

解题思路

题目要求:请你编写一个解决方案来交换所有的 ‘f’ 和 ‘m’ (即,将所有 ‘f’ 变为 ‘m’ ,反之亦然),仅使用 单个 update 语句 ,且不产生中间临时表。注意,你必须仅使用一条 update 语句,且 不能 使用 select 语句。
思路:这道题其实就是检测我们update语句和CASE语句的使用
update语句的基本语法是:

UPDATE 表名
SET1 =1,2 =2, ...
[WHERE 条件];

CASE语句基本语法就是:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    WHEN conditionN THEN resultN
    ELSE default_result
END

先来构建CASE语句

CASE
	WHEN sex = "f" THEN "m"
	WHEN SEX = "m" THEN "f"
END

再来构建UPDATE语句

UPDATE Salary
SET sex=(这里填上刚刚的case语句即可)
;

搞定!
完整的sql语句如下:

UPDATE Salary
SET sex=
CASE
	WHEN sex = "f" THEN "m"
	WHEN SEX = "m" THEN "f"
END;

1050. 合作过至少三次的演员和导演

问题链接
问题图片

解题思路

问题要求:编写解决方案找出合作过至少三次的演员和导演的 id 对 (actor_id, director_id)
这道题其实考的就是GROUP BY分组的使用
每一条记录表示一个演员与导演合作,那么已actor_id和director_id作为分组条件,再计算每组内的 数据量,即可找到合作次数>=3的d 对 (actor_id, director_id)
完整的sql语句如下:

SELECT actor_id,director_id
FROM ActorDirector
GROUP BY actor_id,director_id
HAVING COUNT(*)>=3;

总结

这几道题考的知识点主要有

  1. CASE语句的使用
  2. COUNT聚合函数
  3. GROUP BY 分组
  4. ORDER BY 排序
  5. UPDATE SET语句
    这些都是非常简单常用的方法,需要熟练掌握。
  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jesse_Kyrie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值