LeetCode-SQL-182 — Поиск повторяющихся писем

база данных
LeetCode-SQL-182 — Поиск повторяющихся писем

Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер

LeetCode-182 — Поиск повторяющихся писем

Всем привет, меня зовут Питер~

В этой статье объясняется 182-й раздел LeetCode-SQL, название которого:Найти повторяющиеся адреса электронной почты.

Уровень сложности: легкий, это очень легко узнать после прохождения!

тема

Ниже приведена конкретная тема: поиск повторяющихся адресов электронной почты из данной таблицы.

идеи

индивидуальный подход 1

Групповая статистика на основе каждого почтового ящика Email.Если количество статистики больше 1, это означает, что почтовый ящик дублируется. Запустив один и тот же код дважды, разница настолько велика!

select 
    Email
from Person 
group by Email
having count(Email) > 1;  -- 过滤条件

индивидуальный подход 2

Идея метода 2 аналогична идее метода 1, за исключением того, что используется промежуточная таблица результатов, и, наконец, для фильтрации используется условие where; для фильтрации используется условие наличия, используемое в методе 1:

select
    t.Email
from(select   -- 统计每个Email的个数
        Email
        ,count(*) as number  -- 个数
    from Person 
    group by Email
)t  -- 临时结果表
where t.number > 1;  -- 选择个数大于1的Email

Эффект временной таблицы результатов t:

Эталонный метод

Данная таблица является самообъединяемой, условия объединения: почтовые ящики одинаковые, но идентификаторы разные:

select 
    distinct (p1.Email)  -- 去重统计邮箱
from Person p1
join Person p2 on p1.Email = p2.Email and p1.Id != p2.Id;  -- 指定连接条件