• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

African Cities 문제 LEFT JOIN 적용 방법

24.03.15 19:56 작성 조회수 58

0

Given the CITY and COUNTRY tables, query the names of all cities where the CONTINENT is 'Africa'.

Note: CITY.CountryCode and COUNTRY.Code are matching key columns.

=> continent 가 africa인 값만 출력하면 되는 것이기 때문에 country를 첫번째 테이블로 놓고 LEFT JOIN 처리하려 했습니다

 

SELECT city.name

FROM country

LEFT JOIN city ON country.code = city.countrycode

WHERE country.continent = 'africa'

 

이렇게 작성했더니 정답 내용은 모두 추출되었지만 다량의 NULL값 포함으로 오답 처리 되었습니다.

city 테이블에 없는 africa continent값들로 인해 NULL값이 나옴은 인지했는데, 혹시 NULL값을 제외할 수 있는 방법은 뭔지 문의드립니다!

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.17

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

LEFT JOIN을 사용할 때 NULL 값이 포함되는 문제에 대해 문의주셨군요. LEFT JOIN은 기본적으로 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다. 오른쪽 테이블(city)에 일치하는 레코드가 없을 경우, 결과는 NULL 값으로 채워지게 됩니다.

문제는 아프리카 대륙의 모든 도시 이름을 추출하고자 하는 것이므로, CITY 테이블의 이름을 가져오기 위해 INNER JOIN을 사용하는 것이 좋을 것 같습니다. INNER JOIN은 두 테이블에서 일치하는 레코드만 반환하기 때문에, CONTINENT가 ‘Africa’인 COUNTRY에 해당하는 CITY만을 가져오도록 하면 NULL 값 없이 원하는 결과를 얻을 수 있습니다.

아래 쿼리는 continent가 ‘Africa’인 도시 이름만을 가져오는 예시입니다:

SELECT city.name
FROM city
JOIN country ON city.countrycode = country.code
WHERE country.continent = 'Africa';

이 쿼리는 continent가 ‘Africa’인 country 와 그 country의 code에 해당하는 city.name을 추출하도록 조인을 수행합니다. INNER JOIN (또는 JOIN)을 사용함으로써 양 테이블이 매칭되는 레코드만을 가져오므로 NULL 값이 결과에 포함되는 것을 방지할 수 있습니다.

도움이 되셨길 바랍니다!