[LeetCode] 查找重複的電子郵箱

編寫一個 SQL 查詢,查找 Person 表中全部重複的電子郵箱。算法

示例sql

+----+---------+
| Id | Email   |
+----+---------+
| 1  | a@b.com |
| 2  | c@d.com |
| 3  | a@b.com |
+----+---------+

根據以上輸入,你的查詢應返回如下結果:code

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

說明:全部電子郵箱都是小寫字母。leetcode

題解:

方法一:使用 GROUP BY和臨時表
算法
重複的電子郵箱存在屢次。要計算每封電子郵件的存在次數,咱們能夠使用如下代碼。get

select Email, count(Email) as num
from Person
group by Email;
| Email   | num |
|---------|-----|
| a@b.com | 2   |
| c@d.com | 1   |

以此做爲臨時表,咱們能夠獲得下面的解決方案。io

select Email from
(
  select Email, count(Email) as num
  from Person
  group by Email
) as statistic
where num > 1;

方法二:使用 GROUP BYHAVING 條件
GROUP BY 添加條件的一種更經常使用的方法是使用 HAVING 子句,該子句更爲簡單高效
因此咱們能夠將上面的解決方案重寫爲:class

select Email
    from Person
        group by Email
            having count(Email) > 1;

摘自:
https://leetcode-cn.com/problems/duplicate-emails/solution/cha-zhao-zhong-fu-de-dian-zi-you-xiang-by-leetcode/email

相關文章
相關標籤/搜索