[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] 함수에 대해 알아보겠습니다.
❤긴 글 읽어주셔서 감사드립니다❤
'웹개발 > 웹 개발[데이터베이스-MySQL]' 카테고리의 다른 글
| 데이터베이스 [서브쿼리] 1 (0) | 2022.12.20 |
|---|---|
| 데이터베이스 [HAVING, ORDER BY, LIMIT] 함수 (0) | 2022.12.19 |
| 데이터베이스 [JOIN] 함수 2 (0) | 2022.12.19 |
| 데이터베이스 [JOIN] 함수 1 (0) | 2022.12.19 |
| 데이터베이스 [DB] 정규화(Normalization) .2 (0) | 2022.12.19 |