반응형
오늘은 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을 사용하는게 제일 좋은 것 같습니다.
반응형
'etc. > Leetcode' 카테고리의 다른 글
Leetcode 196 Delete Duplicate Emails (SQL) - Easy (0) | 2022.11.21 |
---|---|
Leetcode - 183. Customers Who Never Order - Easy (0) | 2022.10.20 |
Leetcode - 509. Fibonacci Number (Easy) + Recursion Function (재귀함수) (0) | 2022.10.11 |
Leetcode - 70. Climbing Stairs (Easy) (0) | 2022.10.05 |
Leetcode 136. Single Number (Easy) (0) | 2022.09.30 |
Leetcode - 121. Best Time to Buy and Sell Stock - Easy (0) | 2022.09.22 |
Leetcode - 125. Valid Palindrome - Easy (0) | 2022.09.17 |
미국 테크니컬 인터뷰 문제풀이 - FizzBuzz (1) | 2022.09.16 |
Leetcode - 88. Merge Sorted Array - Easy (0) | 2022.09.07 |
LeeT code - 83. Remove Duplicates from Sorted List - Ease (0) | 2022.09.07 |