본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project/MySQL

MySQL 기초 - 집약함수, 그룹화, 정렬

728x90

#집약함수

count 행 개수를 계산
sum 합계
avg 평균
max 최댓값
min 최솟값

count

select count(*) from [테이블 명];

→ NULL을 포함한 모든 행의 개수를 세어줍니다. 

→ 별표 대신에 특정 열의 이름을 넣어줄 수 도 있다. 이때에는 NULL은 제외시킵니다. 

select count(*) from nameoftable;

distinct를 사용하여 특정 열에서 고유값의 개수가 몇 개인지 알 수도 있습니다

select count(distinct(col_1)) from nameoftable;

 

sum

select sum([열 이름1]), sum([열 이름2]) from [테이블 명];

→ 열 이름1과 열 이름2에 해당하는 행의 합을 각각 보여줍니다.

select sum(col_1), sum(col_2) from nameoftable;

 

avg

select avg([열 이름]) from [테이블 명];

→ 사용법은 sum과 동일합니다.

select avg(col_1) from nameoftable;

 

max와 min

select max([열 이름1]), min([열 이름2]) from[테이블 명];

select max(col_1), min(col_2) from nameoftable;

 

 

#그룹화

select [열 이름1], [열 이름2], ··· from [테이블 명] group by [열 이름1], [열 이름2], ···;

→ group by 뒤에 적은 열을 기준으로 그룹화하게 됩니다.

→ group by 뒤에 2개 이상의 열을 쓰면 더 그룹이 세분화하게 됩니다.

select count(*) from nameoftable group by col_1;

 

count를 통해서 그룹화된 결과를 볼 수 있습니다.

그러나 이렇게 되면 각각의 count가 어느 그룹인지를 알기 어렵습니다.

 

select col_1, count(*) from nameoftable group by col_1;

select에 col_1을 추가 시킴으로써 그룹별 개수를 확인할 수 있습니다.

 

 

#where구를 이용한 그룹화

group by 이전에 where 구를 추가하여 where 조건에 해당하는 것만 그룹화할 수 있습니다.

select [열 이름], count(*) from [테이블 명] where [조건] group by [열 이름];

select col_1, count(*) from nameoftable where col_2 > 3000 group by col_1

→ where구 적용후 그룹화

 

 

#having구를 이용한 그룹화

group by로 나온 결과에서 조건을 추가할때에는 where 대신 having구를 사용합니다.

select col_1, avg(col_3) from nameoftable group by col_1 having avg(col_3) > 2500

→그룹화 후 having구 적용

 

 

#order by

오름차순이나 내림차순으로 정렬하고자 할때에는 order by 구를 사용할 수 있습니다.

select [열 이름1], [열 이름2], ··· from [테이블 명] order by [재정렬 기준 열 1], ···;

select * from nameoftable order by col_1;

→col_1을 기준으로 오름차순으로 정렬되어 보여준다.

 

내림차순으로 보고싶으면 col_1뒤에 desc를 입력하면된다.

select * from nameoftable order by col_1 desc;