본문 바로가기
개발/Database

SELECT ~~ GROUP BY

by 안뇽! 2022. 2. 10.
반응형

혼자 공부하는 SQL 책을 보고 실습한 내용을 정리, 복습이 되길 기대

 


GROUP BY

SELECTFROM 테이블
    WHERE 조건식
    GROUP BYHAVING 조건식
    ORDER BYLIMIT 숫자

 

다음과 같은 DB가 있다.(책에서 제공)

BLK는 지갑2개, 맥북 1개, 청바지 3개 총 6개의 물건을 구매

APN는 아이폰1개, 혼공SQL3개, 청바지 1개 총 5개의 물건을 구매했다.

이렇게 일일이 세어야 한다면 MYSQL을 사용하는 의미가 없다.

 

각 그룹들이 산 물건의 총 개수를 한번에 조회하려면 어떻게해야 할까?

 

집계함수

함수명 설명
SUM() 합계
AVG() 평균
MIN() 최소값
MAX() 최대값
COUNT() 개수
COUNT(DISTINCT) 개수를 세는데 중복은 1개만 인정

각 그룹들이 산 물건의 총 개수를 구하기 위해 SUM()을 이용하면 될 것 같다.

각 그룹들별로 표시하기 위해 GROUP BY를 이용해보자.

 

SUM()안에 덧셈, 곱셈등도 넣을 수 있다.

...다른 집계 함수들은 생략함...

 

HAVING

위의 테이블에서 구매비용이 천원이 넘는 것들만 조회해보자.

 

select mem_id "그룹이름", SUM(amount) "구매한 물건들의 개수", SUM(amount*price) "구매비용" 
from buy 
where sum(price*amount) > 1000 
group by mem_id;

아쉽게도 에러가 뜬다.

이유는 GROUP BY 절에는 HAVING으로 조건문을 사용하기 때문! 즉 WHERE절과 GROUP BY는 함께할 수 없다.

 

 

반응형

'개발 > Database' 카테고리의 다른 글

MySQL 데이터 형식  (0) 2022.02.25
데이터 변경을 위한 SQL 쿼리문 : INSERT, UPDATE, DELETE  (0) 2022.02.13
ORDER BY  (0) 2022.02.09
기본적인 WHERE 절  (0) 2022.02.09
기본적인 쿼리문 간단 정리(CRUD)  (0) 2022.02.05