leetcode , 백준

[SQL] LeetCode 182번 문제 학습

_HelloWorld_ 2025. 4. 15. 17:26

문제 설명

Duplicate EmailsPerson 테이블에서 중복된 이메일을 찾는 거임. 

  • email 컬럼에서 두 번 이상 등장하는 이메일만 리턴.
  • 결과는 Email이라는 컬럼 이름으로 출력.
  • 테이블 구조:
    • Person: id (PK), email.
  • EX:
    • {id: 1, email: "a@b.com"}, {id: 2, email: "c@d.com"}, {id: 3, email: "a@b.com"} 있으면,
    • "a@b.com"이 두 번 나왔으니까 결과는 "a@b.com".

푼 과정

  • 중복된 이메일을 찾으려면 같은 email이 몇 번 나왔는지 세야 함.
  • GROUP BY email로 이메일별 그룹 만들고, COUNT로 각 그룹의 행 수 셈.
  • HAVING으로 횟수가 2 이상인 그룹만 남김.
  • 마지막으로 emailEMAIL로 출력.
  • 쿼리 간단하고, SQL의 GROUP BYHAVING 활용

SELECT email AS EMAIL
FROM Person
GROUP BY Person.email
HAVING COUNT(Person.email) > 1;