当前位置: 首页 > news >正文

网站建设与维护网课安徽省建设工程信息网官方网站

网站建设与维护网课,安徽省建设工程信息网官方网站,大兴安岭网站制作,网站备案电话号码大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:196. 删除重复的电子邮箱二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其…

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:196. 删除重复的电子邮箱
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.正确示范④
      • 提交SQL
      • 运行结果
    • 5.其他
  • 总结


前言


一、题目:196. 删除重复的电子邮箱

表: Person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+
id是该表的主键列。
该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。

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

以 任意顺序 返回结果表。 (注意: 仅需要写删除语句,将自动对剩余结果进行查询)

查询结果格式如下所示。
示例 1:

输入: 
Person 表:
+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
输出: 
+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+
解释: john@example.com重复两次。我们保留最小的Id = 1

二、解题

1.正确示范①

提交SQL

delete from Person 
where id in(
select id from (
select id,email,
row_number() over(partition by email order by id) cols
from Person
) u where cols>1
)

运行结果

2.正确示范②

提交SQL

delete from Person 
where id in(
select id from (
select id,email,
rank() over(partition by email order by id) cols
from Person
) u where cols>1
)

运行结果

3.正确示范③

提交SQL

delete from Person 
where id in(
select id from (
select id,email,
dense_rank() over(partition by email order by id) cols
from Person
) u where cols>1
)

运行结果

4.正确示范④

提交SQL

delete from Person 
where id not in(select min_id from(select email,min(id) min_idfrom Persongroup by email) a
)

运行结果

5.其他


总结

正确示范①思路:
使用开窗函数row_number(),按邮箱分组id升序,取排名1以上的,然后将这部分数据删除掉;
正确示范②思路:
使用开窗函数rank(),按邮箱分组id升序,取排名1以上的,然后将这部分数据删除掉;
正确示范③思路:
使用开窗函数dense_rank(),按邮箱分组id升序,取排名1以上的,然后将这部分数据删除掉;
正确示范④思路:
使用group by按邮箱分组,再用min(id)把每个邮箱对应的最小id找出来,然后将这部分id以外的数据删除。
知识点:
row_number:顺序排序,比如序号为1、2、3
rank:并列排序,会跳过重复的序号,比如序号为1、1、3
dense_rank:并列排序,不会跳过重复的序号,比如序号为1、1、2
因为该题目中id是主键,唯一的,所以row_number、rank、dense_rank在该题目中均适用。

http://www.yayakq.cn/news/616094/

相关文章:

  • 注册域名网站网站为什么要服务器
  • 重庆城乡建设网站ppt制作入门教程
  • 做网站需要用什么开发软件网站做的题不小心关闭了
  • 做网站是需要多少钱界面设计效果图排版
  • 做资讯类网站需要特殊资质吗大数据平台网站建设
  • 东营网站app建设展馆设计施工一体化
  • ai做漫画头像网站购买淘宝店铺在哪个平台
  • 建设目标网站线上推广有哪些渠道
  • 网站推广预期达到的目标wordpress文章不发在首页
  • 广州天河做网站商丘做网站需要多少钱
  • 让路由器做网站服务器wordpress短链识别
  • 建网站需要多钱市场推广怎么做
  • 临沂网站建设多少钱成都网站制作公司定制
  • 公司网站导航栏是什么科技感办公室设计
  • 桂林北站改造最新方案网络规划与设计需求分析
  • 本地的天津网站建设龙元建设集团股份有限公司网站地址
  • 苏州诗华洛网站建设空间设计英文
  • 福州响应式网站建设和老妇做爰视频网站
  • 网站开发背景设置php网站制作商品结算怎么做
  • 威海制作网站网站网站做庄是怎样做
  • 怎么做微信点击网站打赏看片为什么要做网站优化
  • 网站建设方案书阿里云企业网站建设的总体目标
  • html5网站开发icp备案网站名称
  • 广西桂林网站建设房产达人
  • 技术支持 重庆网站网站架构设计师薪酬
  • 济宁有没有专门做网站的业之峰装饰公司简介
  • 四川网站建设 旋风保定广告设计公司
  • 建设机械网站制作品味雅虎 wordpress主题
  • 常熟网站优化眼镜企业网站建设方案
  • 仙游网站建设公司文职人员招聘2023官网