해결된 질문
작성
·
49
0
안녕하세요! 덕분에 남이 짠 쿼리의 의미는 파악이 가능한 수준이 될 것 같다는 자신감이 든 수강생입니다! 감사합니다.
2-6 5번 문제를 직면했을 때 동명이인 = 이름 이외 다른 값이 다 다른 경우로 정의했고,
다행히 강사님의 파일에는 해당하지 않지만, 이름이 같고 다른 값도 다 같은 "중복 데이터"가 있을 수 있다는 가능성도 생각을 했습니다.
그래서 혼자 골똘히 고민했는데, (조건이 2개인가? "이름이 같다" and "다른 컬럼이 다르다" 등) 답이 나오지 않아 재생해보니 생각보다 단순한 쿼리여서 놀랐어요.
동명이인이 있는 이름은 무엇일까요? + 전체 파일의 중복 데이터는 제거(ex. 엑셀의 중복 값 제거 )는 아래와 같이 하면 될까요?
SELECT
DISTINCT
name,
COUNT (name) AS CNT
FROM basic.trainer
GROUP BY name
HAVING CNT>=2
답변 1
1
안녕하세요! 강의 수강하셔서 역량이 올라가셨군요.
잘 수강해주셔서 저도 감사하다는 말씀을 드리고 싶어요. 수강을 해주시고 이런 말씀을 해주셔서 감사합니다.
"동명이인"을 분류하기 위해서 실제 회사에선 주민등록 번호나 스마트폰 인증을 통한 CI 값 등을 활용해요.
CI에 대한 내용 : https://yozm.wishket.com/magazine/detail/2488/
그러나 이런 경우엔 모든 컬럼을 보고 다른 내용이 있다면 다른 사람이구나!라고 볼 수도 있지요. 여러 컬럼 중에 이름이 제일 중요한 분기점이라 말씀하신 내용으로 구하시면 되어요.
쿼리를 조금 더 손본다고 하면
SELECT
name,
COUNT (name) AS CNT
FROM basic.trainer
GROUP BY name
HAVING CNT>=2
이렇게 DISTINCT를 제외하고 쓰는 것이 더 좋아요. 중복을 제거할 때 DISTINCT를 사용하거나 GROUP BY를 사용할 수 있는데 둘 다 같이 사용하는 것은 거의 하지 않아요. HAVING을 사용하려고 하셨으니 GROUP BY가 필요하니 위 쿼리처럼 하시면 됩니다!
아하 넵넵 답변 감사합니다. 🙂