2025.03.14 본_캠프 18일차

민동·2025년 3월 14일
1

본캠프

목록 보기
19/74
post-thumbnail

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을 사용해 citycountry 테이블 결합
  • 서브쿼리에서 GROUP BY co.Continent를 사용해 각 대륙별 최대 인구수 계산
  • (co.Continent, ct.Population) IN (...) 조건으로 대륙별 최대 인구 도시를 필터링
profile
아자아자

0개의 댓글