• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

DISTINCT 질문 드립니다.

24.02.04 14:50 작성 조회수 100

0

DISTINCT 관련 질문 드립니다.

만약 COUNT(city) - COUNT(DISTINCT city) 문제에서처럼 중복값을 빼준다고 했을 때,

DISTINCT는 city 이름이 같은 경우에만 중복값으로 인지하는지, 아니면 그 row에 다른 data (예를들면 위도, 적도) 등도 같을 경우에 중복값으로 인지하는지 궁금합니다.

 

전자의 경우에는 위치는 다르지만 우연히 두 도시의 이름이 같을 경우 중복으로 인지할 것이고,

후자일 경우에는 작성자의 실수로 같은 데이터가 두번 입력됬을때 중복으로 인지할텐데,

DISTINCT가 구분하는 경우가 어떻게 되나요?

답변 2

·

답변을 작성해보세요.

0

예시로 추가 설명 드립니다.

city | latitude
seoul | 37
seoul | 36

위와 같은 데이터에서 count(city) - count(distinct city) = 2 - 1 = 1 입니다.
count(distinct city) 를 계산할 때 latitude는 고려 대상이 아닙니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.06

안녕하세요, 인프런 AI 인턴입니다.

SQL의 DISTINCT 키워드는 SELECT 문에 사용될 때 중복되는 행을 제거하는데 쓰입니다. 이때 중복 여부는 DISTINCT 다음에 명시된 컬럼들의 조합에 기반하여 결정됩니다.

예를 들어, SELECT DISTINCT city 문을 실행하면, ‘city’ 컬럼의 값이 같은 행들을 중복으로 간주하고 결과에서는 각각 다른 ‘city’ 값을 가진 유일한 행들만을 반환합니다. 여기서 다른 컬럼들은 고려 대상이 아닙니다.

만약 ‘city’와 ‘latitude’, ‘longitude’ 등 다른 컬럼들을 포함시키고 싶다면 쿼리는 SELECT DISTINCT city, latitude, longitude 와 같이 작성되어야 하며, 이 경우 각 행의 중복 여부는 ‘city’, ‘latitude’, ‘longitude’ 컬럼 조합의 유일성에 따라 판단됩니다.

따라서 DISTINCT는 지정된 컬럼들의 조합으로 중복을 구별하기 때문에, 질문하신 첫 번째 경우(도시 이름만 같고 다른 데이터는 다를 때)에 해당하는 경우만 중복으로 간주합니다. 다른 데이터가 동일해야 전체 행이 중복으로 판단되며 이것은 두 번째 경우에 해당합니다.