目录
- 1. 相关知识点
- 2.例子
- 2.44 - 修复表中的名字
- 2.45 - 患某种疾病的患者
- 2.46 - 删除重复的电子邮箱
- 2.47 - 第二高的薪水
- 2.48 - 按日期分组销售产品
- 2.49 - 列出指定时间段内所有的下单产品
- 2.50 - 查找拥有有效邮箱的用户
1. 相关知识点
-
相关函数
函数 含义 concat() 字符串拼接 upper() 转大写 lower() 转小写 left(name,1) 从左边截取 right(name,1) 从有边截取 substr(name,2) 从右边第二个位置开始截取 group_concat(name separator ‘,’) 分组后所有的name根据’,'拼接 regexp 正则表达式筛选条件 -
指定2020年2月的方法
- order_date between ‘2020-02-01’ and ‘2020-02-29’
- order_date like ‘2020-02%’
- DATE_FORMAT(order_date, “%Y-%m”) = “2020-02”
- LEFT(order_date, 7) 或 substr(1, 7)
2.例子
2.44 - 修复表中的名字
-- concat(upper(left(name,1)),lower(right(name,length(name)-1)))
-- concat(upper(left(name,1)),lower(substr(name,2)))selectuser_id,concat(upper(left(name,1)),lower(right(name,length(name)-1))) as name
fromusers
order byuser_id;
2.45 - 患某种疾病的患者
select*
fromPatients
whereconditions like 'DIAB1%' or conditions like '% DIAB1%'
2.46 - 删除重复的电子邮箱
delete p1
from Person p1,Person p2
where p1.email=p2.email and p1.id>p2.id;
2.47 - 第二高的薪水
-- 方法一
select(selectsalaryfrom Employeeorder bysalarylimit 1 offset 1) as SecondHighestSalary;-- 方法二
select(selectsalary from(select*,row_number() over(order by salary desc) numberfromEmployee ) as twherenumber=2) as SecondHighestSalary ;
2.48 - 按日期分组销售产品
-- group_concat 分组拼接selectsell_date,count(distinct product) num_sold,group_concat(distinct product order by product separator ',') products
fromActivities
group bysell_date;
2.49 - 列出指定时间段内所有的下单产品
-- 指定2020年2月的方法
-- (1) order_date between '2020-02-01' and '2020-02-29'
-- (2) order_date like '2020-02%'
-- (3) DATE_FORMAT(order_date, "%Y-%m") = "2020-02"
-- (4) LEFT(order_date, 7) 或 substr(1, 7)selectp.product_name,sum(unit) unit
fromOrders o left join Products p on p.product_id=o.product_id
whereo.order_date like '%2020-02%'
group byo.product_id
havingsum(unit)>=100
2.50 - 查找拥有有效邮箱的用户
select*
fromUsers
wheremail regexp '^[A-Za-z][a-zA-Z0-9\\_\\.\\-\\/]*@leetcode\.com$'