반응형
중복된 이메일을 찾아라!!
문제를 보고서 생각보다 쉽겠다고 생각했다.
그러나 그건 내 생각일 뿐이었다...
중복값을 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분이다.
열심히 매일 해서 빨리 올라가야지. 이런 기본이 쌓여야 복잡한 걸 할 수 있다!!
반응형
'직무강화 > SQL' 카테고리의 다른 글
SQL 학습 7일차 LEETCODE 607. Sales Person. (EXIST, NOT EXIST) (0) | 2024.08.24 |
---|---|
SQL 학습 6일차, 183. Customers Who Never Order (NULL, LEFT JOIN) (0) | 2024.08.22 |
SQL 공부 4일차 LEETCODE, 181. Employees Earning More Than Their Managers (0) | 2024.08.20 |
SQL 3일차_LEETCODE. 175. Combine Two Tables (0) | 2024.08.20 |
SQL 공부 2일차_HackerRank(!=, CASE, JOIN, GROUP BY) (0) | 2024.08.18 |