웹개발/웹 개발[데이터베이스-MySQL]

데이터베이스 [Group By] 함수

jhshdksa 2022. 12. 19. 21:05

 [Group By] 함수 학습하기


Group By 란?

 

데이터를 그룹화하는 것 = 데이터를 특정 그룹으로 묶어 집계하는 것이다.

 

FROM and JOIN문 >> WHERE문 다음으로 실행되며

>> 이후로 HAVING문과 SELECT, ORDER BY 그리고 LIMIT문 순으로 실행된다.

 

Group By는 연산과 함께 사용된다.

>> 여러 행의 값을 더하거나, 평균값을 내거나, 개수를 세는 등의 

여러 개의 데이터에 관한 계산을 한다.

 

>> COUNT() : 행의 개수, AVG() : 평균,

MIN() : 최솟값, MAX() : 최댓값, SUM() : 총합


Group By를 사용하는 이유

'groupby_study' 데이터베이스를 새로 생성 >> 조합 : utf8 mb4_general_ci 설정

테이블의 Column을 위와 같이 설정한다.

 

테이블에서 직접 값을 입력한 후

각 행을 우클릭 >> '행 복제(키 미포함)'을 클릭하여 행을 복제하여 아래와 같이 개수를 변경한다.

단축키 Ctrl + Ins

 

위의 사진의 경우 제품명을 기준으로 정렬되어 주문의 개수를 세거나 합계를 구하는 것이 쉽지만

 

아래의 전체 출력된 테이블 사진의 경우 order_id를 기준으로

👇 오름 차순되어 있어 주문과, 합계를 구하는 것이 쉽지 않다. 👇

SELECT를 사용할 때 product_name을 기준으로 그룹화하여

주문, 합계, 평균을 보다 쉽게 구하기 위해  Group By를 사용한다. 


Group By 실습하기 1

'product_name(제품 이름)이 같은 것으로 묶어서 행의 개수를 구하여라'

위의 쿼리 해석

order_mst를 가져와서(FROM)

product_name을 기준으로 그룹화하여(GROUP BY)

product_name와 order_id의 개수를(COUNT) 조회(SELECT)한다.

 

👇SELECT(조회) 결과 👇

COUNT는 'product_name'이 같은 행의 개수를 찾아주는 옵션이다.

안의 값은 상관없이 행의 개수를 알려준다. ' = COUNT(1) '의 SELECT값도 같다.


Group By 실습하기 2

앞서 말했듯이 Group By는 연산과 함께 사용된다.

SUM(stock) : 주문의 총합

MIN(stock) : 최소 주문량

MAX(stock) : 최대 주문량

SUM(stock) / COUNT(1) = AVG(stock) : 전체의 총합에서 개수를 나누면 평균값이다.


Group By 실습하기 3

 

👇각 제품의 order_id 마다 총합계 계산👇

>> order_mst에서(FROM)

order_id를 기준으로 그룹화하여(GROUP BY)

order_mst 전체와( * ), (price * stock)을 조회한다.(SELECT )

SELECT 시 AS(alias)를 사용해 아래와 같이 Column의 이름을 지어줄 수 있다.👇


👇각 제품의 product_name(상품 이름)을 기준으로 총합계 계산👇


지금까지 데이터베이스의 함수인 [Group By]에 대해 알아보았습니다.

 

다음 포스팅에서는 [HAVING, ORDER BY, LIMIT] 함수에 대해 알아보겠습니다.

 

긴 글 읽어주셔서 감사드립니다