프로그래밍/MySQL

[MySQL] SQL ZOO SUM and COUNT 답 해설

모영이 2021. 2. 20. 22:20

 

SUM and COUNT - SQLZOO

World Country Profile: Aggregate functions This tutorial is about aggregate functions such as COUNT, SUM and AVG. An aggregate function takes many values and delivers just one value. For example the function SUM would aggregate the values 2, 4 and 5 to del

sqlzoo.net

#1 Total world population

SUM 함수 사용

SELECT SUM(population)
FROM world

 

#2 List of continents

DISTINCT 중복을 제거

SELECT DISTINCT continent
FROM world

 

#3 GDP of Africa

아프리카 대륙의 gdp합 구하기

SELECT SUM(gdp)
FROM world
WHERE continent = 'Africa'

 

#4 Count the big countries

지역 넓이가 1000000보다 큰 지역의 수 구하기

COUNT 함수 사용

SELECT COUNT(area)
FROM world
WHERE area > 1000000

 

#5 Baltic states population

여러 나라의 인구 수 합 구하기

SUM 함수 사용

SELECT SUM(population)
FROM world
WHERE name in ('Estonia', 'Latvia', 'Lithuania')

 

#6 Using GROUP BY and HAVING

각 대륙의 포함된 나라의 수를 구하기

GROUP BY로 대륙별로 묶은 다음, 이름 수를 카운트 하면 된다.

SELECT continent, COUNT(name) AS 'count'
FROM world
GROUP BY continent

 

#7 Counting big countries in each continent

여기서 HAVING을 사용하면 안된다.

HAVING은 그룹된 데이터에 조건을 거는 것이고 

WHERE은 전체 데이터에 조건을 거는 것이다. 

HAVING에서 population > 10000000 조건을 건다면, 오류가 난다.

이는 population이 continent로 그룹 되어있기에 여러개 요소를 접근이 불가능하기 때문이다.

SELECT continent, COUNT(name) AS 'count'
FROM world
WHERE population > 10000000
GROUP BY continent

 

#8 Counting big continents

여기서 HAVING을 사용한다.

집계 함수는 WHERE 문에서 사용할 수 없는데 데이터가 여러개 선택 되어야 사용할 수 있기 때문이다.

HAVING은 그룹화 된 데이터에 접근하기 때문에 집계함수를 사용할 수 있다.

집계함수 - COUNT, SUM, AVG, MAX, MIN

SELECT continent
FROM world
GROUP BY continent
HAVING SUM(population) > 100000000