inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

초보자를 위한 BigQuery(SQL) 입문

2-6. 연습 문제 4~6번

2-6 5번 중복 행도 있을 것 이란 가능성을 추가로 염두 했을 때 보강 쿼리 문의

해결된 질문

104

wasd7595

작성한 질문수 2

0

안녕하세요! 덕분에 남이 짠 쿼리의 의미는 파악이 가능한 수준이 될 것 같다는 자신감이 든 수강생입니다! 감사합니다.

2-6 5번 문제를 직면했을 때 동명이인 = 이름 이외 다른 값이 다 다른 경우로 정의했고,

다행히 강사님의 파일에는 해당하지 않지만, 이름이 같고 다른 값도 다 같은 "중복 데이터"가 있을 수 있다는 가능성도 생각을 했습니다.

그래서 혼자 골똘히 고민했는데, (조건이 2개인가? "이름이 같다" and "다른 컬럼이 다르다" 등) 답이 나오지 않아 재생해보니 생각보다 단순한 쿼리여서 놀랐어요.

동명이인이 있는 이름은 무엇일까요? + 전체 파일의 중복 데이터는 제거(ex. 엑셀의 중복 값 제거 )는 아래와 같이 하면 될까요?

SELECT
DISTINCT
 name,
 COUNT (name) AS CNT
FROM basic.trainer
GROUP BY name
HAVING CNT>=2

sql bigquery 데이터-리터러시

답변 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가 필요하니 위 쿼리처럼 하시면 됩니다!

 

1

wasd7595

아하 넵넵 답변 감사합니다. 🙂

vs code

0

51

2

수업자료 다운

0

49

2

쿼리 화면 문의

0

72

2

4-5. 3번 문제 질

0

66

2

JOIN 1번 문제

1

76

2

battle 테이블 생성 시 생성 오류

0

69

1

5-6. 4번 문제 WHERE 조건의 위치 문의

0

65

2

5-6. 연습문제 4번, type2에 대해서는 고려하지 않아도 될까요?

1

71

2

battle table 오류

0

69

2

location IS NOT NULL 을 굳이 안 써도 되지 않나요?

0

62

2

12강 집계 함수

0

49

1

2-6. 연습 문제 1~3번

0

50

1

안녕하세요! 11번 문제 query문에 관해 질문드립니다

0

51

1

2-6 #2 WHERE vs. HAVING절 사용 여부 차이

0

67

1

섹션 별 퀴즈

0

67

1

espanso 설치 완료 후 프로그램 실행 문제

0

104

2

Syntax에러

0

83

2

4-5. 1번 문제 TIMESTAMP 관련 질문

0

89

2

시각화 도구 사용

0

110

2

11번 문제 GROUP BY 사용하는 이유

0

99

1

big query 쿼리 결과 컬럼 폭

0

108

3

battle 스키마 조건 복사 파일이 열리지 않아요.

0

130

1

6-5 데이터 검증 결과 예시문제

0

79

2

battle 스키마 조건 복사붙여넣기용 자료

0

115

2