SQL 학습일지 5일차, 리트코드 182. Duplicate Emails 중복값 찾기
다양성과 방향성

여행으로 재미있게 살고 엑셀로 성장하는 삶

직무강화/SQL

SQL 학습일지 5일차, 리트코드 182. Duplicate Emails 중복값 찾기

LATI 라티 2024. 8. 21. 09:35
반응형

 

중복된 이메일을 찾아라!!

 

문제를 보고서 생각보다 쉽겠다고 생각했다.

그러나 그건 내 생각일 뿐이었다...

 

중복값을 DISTINCT로 제거만 해봤지 중복된 걸 찾는 방법을 몰랐기 때문이다.

EXCEL이라면 중복값 찾는 서식을 사용하거나 = = 으로 TRUE FALSE or VLOOKUP을 사용하면 된다.

 

그러나, SQL에는 그런 함수가 없고 기작 자체가 다르다.... 하면서 또 느낀 건 진짜 SQL은 또다른 언어고 그에 맞는 방식을 찾아야 한다는 것. 휴...!

 


첫번째 풀이과정
중복된 이메일들
전체 이메일 - 독립 이메일 = 중복 이메일들
INLINE으로 진행 불가, 여러개의 행이 나오기 때문
그렇다는 건 SELFJOIN으로 두 테이블 간에  차이를 만들어주면 됨
아니면 count...? 어떻게 표현하지?
 

>> 이렇게 생각하고 풀었는데 아니었다.

중복값을 제거한 독립된 이메일을 제거하면 전체 모수에서 고유값을 빼는 것이기 때문에 테이블은 비어있는 상태가 되게 된다.

 

SELECT a.email FROM person a
JOIN person b
ON b.email = a.email

 

두번째 풀이과정

그렇다면, 도대체 어떻게 중복값을 찾아야 할까....?

힌트를 얻고자 DISCUSSION에 가니 GROUP BY가 있었다.

음.. GROUP BY로 묶어주고 COUNT로 개수를 세서 1개보다 크면 중복된 값이 있다고 생각 했다.


SELECT email FROM person
GROUP BY email
HAVING count(email) > 1

 
A email 1 ( 중복된 값이 없는 고유 값이기에 1개다.)
B eamil 2 ( 2개의 중복된 값을 그룹핑 했기에 2개다.) 
 
후... 아침 학습은 여기까지...! 1계단 1계단 올라가는 데 걸리는 시간은 평균 30분이다.
열심히 매일 해서 빨리 올라가야지. 이런 기본이 쌓여야 복잡한 걸 할 수 있다!!
 
 
 
반응형