# 데이터베이스 예제코드 (MySQL+AWS) - GROUP BY, SUM, AVG, MAX, MIN, DISTINCT 익히기

## 4. GROUP BY, SUM, AVG, MAX, MIN, DISTINCT 익히기¶

mysql> select gender from students group by gender;

• gender 로 그룹핑하고 gender룰 검색하면, gender 가 어떤 종류가 있는지 알수 있음
• SUM(): 컬럼값의 합계
• AVG(): 컬럼값의 평균
• COUNT(*): 로우 수
• 이상을 GROUP BY 기준 컬럼 으로 묶으면, 각 그룹별 평균, 합계, 로우 수도 모두 알 수 있음
In :
SQL = "select gender, sum(english), avg(math), count(*) from students group by gender"
df = pd.read_sql(SQL, db)
df

Out:
gender sum(english) avg(math) count(*)
0 man 278.0 63.75 4
1 woman 193.0 60.00 3
• MAX(): 컬럼 최대값
• MIN(): 컬럼 최소값
In :
SQL = "select gender, max(english), min(math) from students group by gender"
df = pd.read_sql(SQL, db)
df

Out:
gender max(english) min(math)
0 man 90 32
1 woman 87 30
• 복합검색: gender, AVG(english), AVG(math) 를 gender 로 그룹핑하되, 그룹별 영어 평균 점수가 높은 순으로 출력하세요

### 연습문제 - 성별 영어, 수학, 국어 평균점수 알아보기¶

In :
SQL = "select gender, avg(english), avg(math), avg(korean) from students group by gender"
df = pd.read_sql(SQL, db)
df

Out:
gender avg(english) avg(math) avg(korean)
0 man 69.5000 63.75 52.7500
1 woman 64.3333 60.00 70.3333

### 연습문제 - 성별 영어, 수학, 국어 최저점수 알아보기¶

In :
SQL = "select gender, min(english), min(math), min(korean) from students group by gender"
df = pd.read_sql(SQL, db)
df

Out:
gender min(english) min(math) min(korean)
0 man 45 32 20
1 woman 30 30 60
• DISTINCT : 특정 컬럼값 출력시 중복된 값을 출력하지 않음
In :
SQL = "SELECT DISTINCT gender FROM students"
df = pd.read_sql(SQL, db)
df

Out:
gender
0 man
1 woman