当前位置:   article > 正文

SQL学习笔记:Leetcode刷题 SQL入门_怎么从leetcode刷sql题

怎么从leetcode刷sql题

SQL学习笔记:Leetcode刷题

1873. 计算特殊奖金

写出一个SQL 查询语句,计算每个雇员的奖金。如果一个雇员的id是奇数并且他的名字不是以’M’开头,那么他的奖金是他工资的100%,否则奖金为0。

  • 难点:

返回的列带筛选条件

`if ( 条件,若条件正确则返回,若条件错误则返回`)
  • 1

判断奇偶

employee_id%2=1
--or
mod(id,2)  --=1 是指id是奇数, =0 是指id是偶数
  • 1
  • 2
  • 3

627. 变更性别

编写一个 SQL 查询来交换所有的 ‘f’ 和 ‘m’ (即,将所有 ‘f’ 变为 ‘m’ ,反之亦然),仅使用 单个 update 语句 ,且不产生中间临时表。

  • 难点:

update语句

update 表名
set 列名 = 修改后的值
  • 1
  • 2

case when

case 列名
	when 1 then 2 #将1换为2
	when 2 then 3
	else 3
end
  • 1
  • 2
  • 3
  • 4
  • 5

196. 删除重复的电子邮箱

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

  • 难点:

DELETE

将该表分为两份判断

DELETE p1.*
FROM Person as p1, Person as p2
WHERE p1.email = p2.email AND p1.id>p2.id
  • 1
  • 2
  • 3

1667. 修复表中的名字

编写一个 SQL 查询来修复名字,使得只有第一个字符是大写的,其余都是小写的。

CONCAT

CONCAT(' A','B','C')

UPPER, LOWER

LEFT, SUBSTRING

LEFT('123456789',3) 返回左边3项
SUBSTRING('123456789',3) 从第3位开始返回

1484. 按日期分组销售产品

编写一个 SQL 查询来查找每个日期、销售的不同产品的数量及其名称。
每个日期的销售产品名称应按词典序排列。

COUNT 计数

DISTINCT 去重

GROUP CONCAT 多个拼接

连接group by的结果集时,可以指定自定义的分隔符,不指定的情况下,默认是 ‘,’

GROUP_CONCAT(DISTINCT product 
			 ORDER BY product ASC 
			 SEPARATOR ',')
  • 1
  • 2
  • 3

解法

SELECT sell_date,
  COUNT(DISTINCT product) as num_sold,
  GROUP_CONCAT(DISTINCT product
                ORDER BY product ASC
                SEPARATOR ',') as products
FROM Activities
GROUP BY sell_date #需要将同一销售日期的并在一起
ORDER BY sell_date
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1527. 患某种疾病的患者

写一条 SQL 语句,查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。

近似查询

SELECT sell_date,
  COUNT(DISTINCT product) as num_sold,
  GROUP_CONCAT(DISTINCT product
                ORDER BY product ASC
                SEPARATOR ',') as products
FROM Activities
GROUP BY sell_date #需要将同一销售日期的并在一起
ORDER BY sell_date
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1965. 丢失信息的雇员

写出一个查询语句,找到所有 丢失信息 的雇员id。当满足下面一个条件时,就被认为是雇员的信息丢失:
雇员的 姓名 丢失了,或者
雇员的 薪水信息 丢失了,

  • 思路 :
    将salary空白的join到Employees表

left join

A left join B on 关键key条件 WHERE 条件 #将B加到A中
  • 1

union

1795. 每个产品在不同商店的价格

重构 Products 表,查询每个产品在不同商店的价格,使得输出的格式变为(product_id, store, price) 。如果这一产品在商店里没有出售,则不输出这一行。

SELECT product_id, 'store1' as store, store1 as price FROM Products WHERE store1 is not NULL
UNION 
SELECT product_id, 'store2' as store, store2 
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/843646
推荐阅读
相关标签
  

闽ICP备14008679号