개발공부

[MySQL] 데이터 별로 묶기 group by, 데이터의 개수 count(), 합계 sum() 최댓값 max(), 최솟값 min(), 평균 값 avg() 본문

Database/MySQL

[MySQL] 데이터 별로 묶기 group by, 데이터의 개수 count(), 합계 sum() 최댓값 max(), 최솟값 min(), 평균 값 avg()

mscha 2022. 5. 16. 16:10

books 테이블

데이터의 개수얻기 count()

# books 테이블의 데이터 개수(책의 갯수)는 ???
select count(*)
from books;

# 유니크한 author_fname 의 갯수는??? 
select count(distinct author_fname)
from books;

# 책 제목에 the 가 들어있는 책은 몇개인가?
select count(*)
from books
where title like '%the%';

 

컬럼별로 데이터를 묶기 group by

# author_lname 별로, 몇권의 책을 썼는지, 
# author_lname과 cnt라는 컬럼으로 데이터를 가져오기
select author_lname, count(*) as cnt
from books
group by author_lname;

# author_fname, author_lname 별로 데이터가 몇개인가 ?
# group by 는 컬럼 1개, 2개, 3개... 상관 없이 여러개 가능하다.
select author_fname, author_lname, count(*)
from books
group by author_fname, author_lname;

데이터 합계 구하기 sum()

# 이 테이블의 페이지수 총 합은?
select sum(pages)
from books;

# 각 작가별로, 책 전체 재고량은?
# 재고량과 작가 이름이 나오도록 데이터를 가져오기
select author_fname, author_lname, sum(stock_quantity) as sum
from books
group by author_fname, author_lname
order by sum;

 

최댓값 구하기 max()

# 페이지수 중 가장 큰 값은 ?
select max(pages)
from books;

최솟값 구하기 min()

# released_year 의 최솟값은 ?
select min(released_year)
from books;

 

평균값 구하기 avg()

# 이 테이블의 책 페이지 수의 평균 구하기
select avg(pages)
from books;