데이터베이스 예제코드 (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 가 어떤 종류가 있는지 알수 있음
mysql> select gender, sum(english), avg(math), count(*) from students group by gender; +--------+--------------+-----------+----------+ | gender | sum(english) | avg(math) | count(*) | +--------+--------------+-----------+----------+ | 남자 | 188 | 58.3333 | 3 | | 여자 | 283 | 65.0000 | 4 | +--------+--------------+-----------+----------+
  • SUM(): 컬럼값의 합계
  • AVG(): 컬럼값의 평균
  • COUNT(*): 로우 수
  • 이상을 GROUP BY 기준 컬럼 으로 묶으면, 각 그룹별 평균, 합계, 로우 수도 모두 알 수 있음
SQL = "select gender, sum(english), avg(math), count(*) from students group by gender"
df = pd.read_sql(SQL, db)
df
Out[20]:
gender sum(english) avg(math) count(*)
0 man 278.0 63.75 4
1 woman 193.0 60.00 3
mysql> select gender, max(english), min(math) from students group by gender;
  • MAX(): 컬럼 최대값
  • MIN(): 컬럼 최소값
SQL = "select gender, max(english), min(math) from students group by gender"
df = pd.read_sql(SQL, db)
df
Out[21]:
gender max(english) min(math)
0 man 90 32
1 woman 87 30
  • 복합검색: gender, AVG(english), AVG(math) 를 gender 로 그룹핑하되, 그룹별 영어 평균 점수가 높은 순으로 출력하세요
mysql> select gender, AVG(english), AVG(math) from students group by gender order by AVG(english) DESC; +--------+--------------+-----------+ | gender | AVG(english) | AVG(math) | +--------+--------------+-----------+ | 여자 | 70.7500 | 65.0000 | | 남자 | 62.6667 | 58.3333 | +--------+--------------+-----------+

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

SQL = "select gender, avg(english), avg(math), avg(korean) from students group by gender"
df = pd.read_sql(SQL, db)
df
Out[22]:
gender avg(english) avg(math) avg(korean)
0 man 69.5000 63.75 52.7500
1 woman 64.3333 60.00 70.3333

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

SQL = "select gender, min(english), min(math), min(korean) from students group by gender"
df = pd.read_sql(SQL, db)
df
Out[23]:
gender min(english) min(math) min(korean)
0 man 45 32 20
1 woman 30 30 60
mysql> select gender, max(english), min(math) from students group by gender;
  • DISTINCT : 특정 컬럼값 출력시 중복된 값을 출력하지 않음
SQL = "SELECT DISTINCT gender FROM students"
df = pd.read_sql(SQL, db)
df
Out[24]:
gender
0 man
1 woman