1. Group By
1.1 Syntax
1
2
3
SELECT 컬럼
FROM 테이블
GROUP BY 컬럼
- Group By는 여러개의 동일한 데이터를 가지는 특정 컬럼을 합쳐주는 역할을 하는 명렁어
- count, min, max, sum, avg의 그룹함수가 있음
1
USE world
- World 데이터 베이스로 이동
- World 데이터 베이스에는 city, country, countrylanguage 3개의 테이블이 있는 데이터 베이스
- 실습을 위해 생성한것이니, 현재 페이지에서는 확인 할수 없음
1.2 Count
1
2
3
SELECT countrycode, COUNT(countrycode)
FROM city
GROUP BY countrycode
- city 테이블의 countrycode를 묶고 각 코드마다 몇개의 데이터가 있는지 확인
1
2
SELECT COUNT(DISTINCT(language)) as language_count
FROM countrylanguage
- countrylanguage테이블에서 전체 언어가 몇개 있는지 구하는 코드
- as를 주어 컬럼에 별칭을 주었음
1.3 Max
1
2
3
SELECT continent, MAX(population) as Population, MAX(gnp) as GNP
FROM country
GROUP BY continent
- 대륙별 최대 인구수와 GNP 값을 조회
1.4 Min
1
2
3
4
SELECT continent, MIN(population) as Population, MIN(gnp) as GNP
FROM country
WHERE GNP != 0 AND Population != 0
GROUP BY continent
- 대륙별 최소 인구수와 최소 GNP 조회함
- Where 조건으로 GNP와 인구수가 0이 아닌 데이터 중에서 조회
1.5 Sum
1
2
3
4
SELECT continent, SUM(population) as Population, SUM(gnp) as GNP
FROM country
WHERE GNP != 0 AND Population != 0
GROUP BY continent
- 대륙별 총 인구수와 총 GNP를 조회
- Where 조건으로 GNP와 인구수가 0이 아닌 데이터 중에서 조회
1.6 Avg
1
2
3
4
5
SELECT continent, AVG(population) as Population, AVG(gnp) as GNP
FROM country
WHERE GNP != 0 AND Population != 0
GROUP BY continent
ORDER BY Population DESC
- 대륙별 평균 인구수와 평균 GNP 결과를 인구수 내림차순으로 정렬
2. Having
2.1 Having
1
2
3
4
SELECT 컬럼1, 컬럼2, 컬럼3
FROM 테이블
GROUP BY 컬럼1
HAVING 조건
- Having은 Group By에서 반환되는 결과에 조건을 주는것
- Where과 똑같지만, Group By 뒤에는 Having이 와야함
1
2
3
4
SELECT continent, SUM(population) as Population
FROM country
GROUP BY continent
HAVING Population > 500000000
- 대륙별 전체 인구를 조회하고 그중 5억 이상인 대륙만 조회
1
2
3
4
5
6
7
SELECT continent, AVG(population) as Population, AVG(gnp) as GNP,
AVG(gnp) / AVG(population) * 1000 as AVG
FROM country
WHERE GNP != 0 AND Population != 0
GROUP BY continent
HAVING AVG > 0.01
ORDER BY AVG DESC
- 대륙별 평균 인구수, 평균 GNP, 1인당 GNP를 조회한 결과를 GNP가 0.01 이상인 데이터를 조회하고 1인당 GNP를 내림차순으로 정렬