Notice
Recent Posts
Recent Comments
Link
오늘도 개발
GROUP BY, 집계함수 본문
0. 예시로 들 테이블
products, product_images, charges, product_charges

1. GROUP BY를 사용하지 않았을 때
그냥 테이블을 join한 결과는 다음과 같다.
SELECT * FROM products
LEFT JOIN product_images ON product_images.product_id = products.id;

2. GROUP BY와 집계함수
GROUP BY
join한 테이블의 여러 행을 하나로 묶어주는 키워드.
위 예시에서는 각 상품을 한 행으로 묶어서 볼 수 있다. (ex. 1번 상품 한줄, 2번 상품 한줄.. 이런 식으로)
하지만 GROUP BY는 집계 함수 없이 사용하면 오류가 난다.
예를 들어 product 1은 이미지가 두 개 있는데, 이것을 어떤 방식으로 한 행으로 합칠지 컴퓨터는 모른다.
그래서 집계 함수를 같이 사용해서 행을 어떤 식으로 합치라고 알려줘야 한다.
Aggregate function(집계 함수)
행을 어떻게 묶을 지 정해주는 함수,
COUNT(), MAX(), MIN(), SUM(), GROUP_CONCAT(), JSON_ARRAYAGG() 등이 있다.
(GROUP_CONCAT은 스트링으로 만들어 묶고, JSON_ARRAYAGG는 json array 형태로 만들어 묶는다.)
SELECT
products.id, products.title, products.description, products.price,
JSON_ARRAYAGG(product_images.url)
FROM products
LEFT JOIN product_images ON products.id = product_images.product_id
GROUP BY products.id; -- 상품의 아이디를 기준으로 행을 묶음

'웹 프로그래밍 > DB' 카테고리의 다른 글
| 데이터베이스 인덱스(Index) (0) | 2022.10.21 |
|---|---|
| LEFT JOIN 시 행 중복 문제 해결하기 (0) | 2022.10.04 |
| 테이블 JOIN 방법(INNER JOIN, OUTER JOIN) (0) | 2022.10.02 |
| 트랜잭션(Transaction) (0) | 2022.06.28 |
| 관계형 데이터베이스(Relational Database) (0) | 2022.06.27 |