文章目录
前言
力扣-查找重复的电子邮箱 |
---|
MySQL入门技能树 |
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题《查找重复的电子邮箱》。
介绍
GROUP BY用于分组查询,而HAVING用于在GROUP BY分组的基础上进行条件筛选。
具体来说,HAVING是在GROUP BY后对分组结果进行筛选,而WHERE是在GROUP BY前筛选原始数据。
GROUP BY和HAVING常用于对分组后数据的统计,例如计算某一列的平均值、最大值、最小值等,然后使用HAVING筛选结果。
一、题目:182. 查找重复的电子邮箱
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
根据以上输入,你的查询应返回以下结果:
+---------+
| Email |
+---------+
| a@b.com |
+---------+
说明:所有电子邮箱都是小写字母。
二、解题
1.正确示范①
提交SQL
select Email
from Person
group by Email
having count(1)>1
运行结果
2.正确示范②
提交SQL
select Email
from Person
group by Email
having count(Email)>1
运行结果
3.正确示范③
提交SQL
select Email
from Person
group by Email
having count(*)>1
运行结果
4.正确示范④
提交SQL
select Email from(
select Email,
count(1) num
# count(*) num
# count(Email) num
from Person
group by Email
) e
where num>1
运行结果
总结
正确示范①②③思路:
使用 GROUP BY 和 HAVING 条件;
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
正确示范④ 思路:
使用 GROUP BY 和临时表;
count(1)、count(Email)、count(*)在该题目中都适用。