1. 글로벌 확장 기회 발굴
문제
- 전년 대비 GNP가 감소한 국가 중 인구가 1천만 명 이상인 국가의 수를 구해야 한다.
- 이전 연도의 GNP 값이
0
이거나 NULL
이면 제외한다.
정답 쿼리
SELECT COUNT(*) AS COUNTRY_COUNT
FROM country
WHERE GNP < GNPOld
AND Population >= 10000000
AND GNPOld IS NOT NULL;
쿼리 설명
GNP < GNPOld
조건으로 전년 대비 GNP 감소한 국가 필터링
Population >= 10000000
조건으로 인구 1천만 명 이상인 국가 선택
GNPOld IS NOT NULL
조건으로 NULL
값 제외
COUNT(*)
를 사용해 해당 국가의 개수 반환
2. 도시개발구역 인구 분석
문제
District
(행정 구역)별 도시 평균 인구를 구해야 한다.
- 도시 개수가 3개 이상인
District
만 포함해야 하며, 평균 인구는 정수로 변환하고 내림차순 정렬해야 한다.
정답 쿼리
SELECT District, FLOOR(AVG(Population)) AS AVERAGE_POPULATION
FROM city
GROUP BY District
HAVING COUNT(*) >= 3
ORDER BY AVERAGE_POPULATION DESC;
쿼리 설명
GROUP BY District
로 행정 구역별 그룹화
AVG(Population)
으로 평균 인구 계산 후 FLOOR()
로 내림 처리
HAVING COUNT(*) >= 3
조건으로 도시가 3개 이상인 District
만 포함
ORDER BY AVERAGE_POPULATION DESC
로 평균 인구 기준 내림차순 정렬
3. 인기도시 타겟 마케팅
문제
- 대륙(Continent)별로 인구가 가장 많은 도시를 찾아야 한다.
- 결과는 대륙별 최대 인구 도시 1개씩만 출력해야 한다.
정답 쿼리
SELECT ct.Name AS CITY_NAME, co.Name AS COUNTRY_NAME, co.Continent, ct.Population
FROM city ct
JOIN country co ON ct.CountryCode = co.Code
WHERE (co.Continent, ct.Population) IN (
SELECT co.Continent, MAX(ct.Population)
FROM city ct
JOIN country co ON ct.CountryCode = co.Code
GROUP BY co.Continent
);
쿼리 설명
JOIN
을 사용해 city
와 country
테이블 결합
- 서브쿼리에서
GROUP BY co.Continent
를 사용해 각 대륙별 최대 인구수 계산
(co.Continent, ct.Population) IN (...)
조건으로 대륙별 최대 인구 도시를 필터링