飞呀不死鸟

2020-06-09   阅读量: 736

SQL题目

扫码加入数据分析学习群

编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。

示例:

+----+---------+

| Id | Email |

+----+---------+

| 1 | a@b.com |

| 2 | c@d.com |

| 3 | a@b.com |

+----+---------+

根据以上输入,你的查询应返回以下结果:

+---------+

| Email |

+---------+

| a@b.com |

+---------+

说明:所有电子邮箱都是小写字母

解题方法:

方法一:使用 GROUP BY 和临时表

算法

重复的电子邮箱存在多次。要计算每封电子邮件的存在次数,我们可以使用以下代码。

select Email, count(Email) as num

from Person

group by Email;

| Email | num |

|---------|-----|

| a@b.com | 2 |

| c@d.com | 1 |

以此作为临时表,我们可以得到下面的解决方案。

select Email from

(

select Email, count(Email) as num

from Person

group by Email

) as statistic

where num > 1

;

方法二:使用 GROUP BY 和 HAVING 条件

向 GROUP BY 添加条件的一种更常用的方法是使用 HAVING 子句,该子句更为简单高效。

所以我们可以将上面的解决方案重写为:

select Email

from Person

group by Email

having count(Email) > 1;

16.0342 2 0 关注作者 收藏

评论(0)


暂无数据

推荐课程