본문 바로가기
개발/Database

SELECT ~~ GROUP BY

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

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

 


GROUP BY

SELECT 열
	FROM 테이블
    WHERE 조건식
    GROUP BY 열
    HAVING 조건식
    ORDER BY 열
    LIMIT 숫자

 

다음과 같은 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