[HakerRank] Average Population of Each Continent

SQL-쿼리테스트

목록 보기
2/21

문제 출처 : https://www.hackerrank.com/challenges/average-population-of-each-continent/problem?isFullScreen=true


Q)Given the CITY and COUNTRY tables, query the names of all the continents (COUNTRY.Continent) and their respective average city populations (CITY.Population) rounded down to the nearest integer.

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

A)

select country.continent,floor(avg(city.population))
from city 
inner join country
on city.countrycode = country.code
group by country.continent

우선 문제를 살펴보면 두 개의 테이블을 이용하여 모든 대륙의 이름, 소수점을 제외한 각 대륙별 평균 인구를 구하는 문제이다.

우선 두 테이블의 모든 대륙과 평균인구를 구하기 위해 두 테이블을 합쳐줘야 한다.

CITY 테이블의 countrycode 와 COUNTRY 테이블의 CODE가 매칭되므로 두 테이블을 병합하기 위해 해당 컬럼을 사용한다.

위 조건을 이용하여 모든도시 의 평균인구를 구해야 하기 때문에 두 테이블의 교집합을 구하기 위해 INNER JOIN 을 사용할 수 있다.

이로써 두 테이블을 병합하였다. 하지만 여기서 COUNTRY 테이블 내에 중복된 continent 값이 있을 수 있고, 국가별로 그룹을 맺어주어야 하기 때문에 GROUP BY 를 통하여 continent 로 그룹화를 진행해주었다.

마지막으로 소수점을 제외한 평균 인구수를 계산하기 위해 FLOOR, AVG 함수를 사용하였다.

AVG 함수로 평균 인구수를 계산하고
FLOOR 함수를 통해 소수점을 제외시킴으로써 주어진 문제를 해결할 수 있다.

profile
살아남기 위해 끄적이는 블로그 : 생존법

0개의 댓글