728x90
1. 문제 :
Person.라는 테이블에서 모든 중복 이메일을 찾는 SQL 쿼리를 작성합니다
예를 들어 쿼리는 위 테이블(아래 결과)에 대해 다음을 반환해야 합니다.
2. 정답 : Description 옆에 Solution 탭으로 이동 또는
https://github.com/keineahnung2345/leetcode-cpp-practices/blob/master/182.%20Duplicate%20Emails.sql 참고
3. 정답 해설 :
정답은 여러가지이며 본인에게 이해가 빠른 것으로 하길 바란다.
문제의 핵심은 중복 값을 추출해 내는 것이다.
Person 테이블을 보면 중복 값이 1개 이상이 되어야 한다는 걸 확인 할 수 있다. (row 1, 3)
먼저 Group by 와 Having 절을 통해서 간단하게 풀수 있다.
SELECT P.Email FROM Person P Group by P.Email Having COUNT(P.*) > 1 -- result : a@b.com |
4. 추가 :
특정컬럼의 중복 값을 확인하고 싶을 때가 있을 것이다. (예시 : 통계)
그럴 때에는 아래와 같이 결과 값을 한번 묶고 표현해 주는 방식도 좋은 방안이 될 것이다.
정답 링크에서도 확인 가능하다.
select PS.Email as mailNm, PS.cnt as cnt from ( select P.Email, count(P.Email) as cnt from Person P group by P.Email ) as PS where PS.cnt >= 0 Order by PS.cnt -- result : a@b.com | 1 c@d.com | 0 |
728x90
'데이터베이스 > 쿼리 문제' 카테고리의 다른 글
181. Employees Earning More Than Their Managers (leetCode 코딩 알고리즘 문제) (4) | 2021.08.28 |
---|---|
176. Second Highest Salary (leetCode 코딩 알고리즘 문제) (0) | 2021.08.28 |
175. Combine Two Tables (leetCode 코딩 알고리즘 문제) (382) | 2021.08.27 |