etc./Leetcode

Leetcode - 182. Duplicate Emails - MySQL - Easy

솔웅 2022. 10. 18. 07:16
반응형


오늘은 SQL쿼리를 만들어야 하는 문제 입니다.

Person이라는 테이블에 id 와 email이라는 컬럼이 있는데,
이 중에서 이메일이 두개 이상 되는 것을 찾아 내는 겁니다.

쉽게 생각하면 Group By와 Having을 사용해서 만들면 됩니다.

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

Email로 그룹바이 한 다음에 email count가 1을 넘는 Email을 표시하는 겁니다.

두 번째 방법으로는 Email과 Email count를 select 한 다음에 이 중에서 email count가 1 보다 큰 것만 표시하도록 하는 방법이 있습니다.

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

저는 이 방법 보다는 위에 첫번째 방법이 익숙한데…. 이렇게 해도 되겠네요.

그리고 이렇게 해도 됩니다.

select distinct p1.Email
from Person p1, Person p2
where p1.Email = p2.Email and p1.id != p2.id;



실행 결과 역시 첫번째 방법이 가장 빠른 것 같네요.

그냥 직관적으로 Group By와 Having을 사용하는게 제일 좋은 것 같습니다.

반응형