더북(TheBook)

3 정답

SELECT a.name, COUNT(b.language)
  FROM country a
  LEFT JOIN countrylanguage b
    ON a.code = b.countrycode
 WHERE a.continent = 'Africa'
 GROUP BY a.name
HAVING COUNT(b.language) = 0;

해설 FROM 절에 country, LEFT JOIN 다음에 countrylanguage 테이블을 명시하고, ON 절에 조인 칼럼인 code와 countrycode의 값이 같은 조인 조건을 기술합니다. 그리고 아프리카(Africa) 대륙에 속한 국가만 조회하므로 WHERE 절에 조회 조건을 줘서 continent 값이 ‘Africa’인 건을 걸러냅니다. 그리고 GROUP BY 절에 a.name을 명시해 국가명별로 그룹화하고, SELECT 절에서 COUNT(b.language)로 각 국가에서 사용하는 언어의 수를 구합니다. 이때 사용 언어가 없는 국가만 조회해야 하므로 HAVING 절에 COUNT(b.language)가 반환하는 값이 0인 값을 넣어 골라 냅니다. 쿼리를 실행하면 사용 언어가 없는 아프리카 대륙의 국가로 ‘British Indian Ocean Territory’가 조회됩니다.

본문으로

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.