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

SQL-leetcode-182. 查找重复的电子邮箱

182. 查找重复的电子邮箱

表: Person

±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| email | varchar |
±------------±--------+
id 是该表的主键(具有唯一值的列)。
此表的每一行都包含一封电子邮件。电子邮件不包含大写字母。

编写解决方案来报告所有重复的电子邮件。 请注意,可以保证电子邮件字段不为 NULL。

以 任意顺序 返回结果表。

结果格式如下例。

示例 1:

输入:
Person 表:
±—±--------+
| id | email |
±—±--------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
±—±--------+
输出:
±--------+
| Email |
±--------+
| a@b.com |
±--------+
解释: a@b.com 出现了两次。

题解

思路① 求重复次数

次数肯定要涉及到分组计数,重复就是次数大于1,于是乎sql如下
先分组排序,再having针对统计结果做判断

ps: count(id),可能存在性能问题,但count(1)不会

select 
    email
from person group by email having count(1)>1

思路② 求重复次数,row_number() 一下

用什么函数可以实现呢?row_number() 分组并给每行的数据打个标记实现去重下是不是就ok了?
row_number(partition by xx) as rn ,重复就是rn大于1

select 
    distinct tmp.email
from (
    select email,row_number() over (partition by email) as rn from person
) tmp where rn > 1

其他好像没有啥好办法了


http://www.kler.cn/a/463180.html

相关文章:

  • 自动驾驶三维重建
  • Redis面试相关
  • leetcode题目(3)
  • 前后端分离项目部署到云服务器、宝塔(前端vue、后端springboot)详细教程
  • 六十一:HTTP/2的问题及HTTP/3的意义
  • vue2实现excel文件预览
  • 深入探索openEuler Kernel:操作系统的心脏
  • 解释dash中的layout = go.Layout( yaxis={domain: [0, 0.50]}, yaxis2={domain: [0.51
  • 计算机网络期末复习之数据链路层
  • WebRTC的线程模型
  • SpringBoot 集成mybatis-plus
  • Vue.js组件开发-实现无感刷新Token
  • Spring web 琐碎知识点 配置文件 会话技术
  • 2.flask中使用装饰器统一验证用户登录
  • npm install 安装选项 -d -s -g
  • C++ 设计模式:适配器模式(Adapter Pattern)
  • 在Unity中用Ab包加载资源(简单好抄)
  • 家政预约小程序05活动管理
  • Centos文件已删除空间未释放
  • leetcode 3280. 将日期转换为二进制表示 简单
  • Spring Boot 3 文件下载、多文件下载以及大文件分片下载、文件流处理、批量操作 和 分片技术
  • Java工程师实现视频文件上传minio文件系统存储及网页实现分批加载视频播放
  • 12.30-1-5学习周报
  • 【时时三省】(C语言基础)动态内存函数realloc
  • Node.js 常用命令全攻略
  • VSCode 插件开发实战(十三):如何添加个性化欢迎信息