[Data Base] MySQL 집계함수와 GROUP BY

HOHO·2023년 3월 21일

#MYSQL

목록 보기
15/17

집계함수를 사용할때 GROUP BY를 사용하는게 자꾸 이해가 안가서
결국 우리 GPT님께 여쭤 보았다

GROUP BY 를 사용하는 이유

  1. 집계함수를 사용할 때 필수적
    집계 함수는 여러 행을 그룹화하여 단일 결과를 반환하는 함수입니다. GROUP BY 구문이 없으면 집계 함수는 모든 행의 합계, 평균 등을 계산하므로 필요한 결과를 얻을 수 없습니다.

  2. 데이터를 더 잘 이해할 수 있도록 함
    GROUP BY 구문을 사용하면 데이터를 더 쉽게 이해할 수 있습니다. 예를 들어, 도시별로 판매한 제품의 총 수량을 계산하는 경우, GROUP BY 구문을 사용하여 각 도시별로 데이터를 그룹화하여 보다 명확하게 데이터를 분석할 수 있습니다.

  3. 속도 향상
    GROUP BY 구문을 사용하면 집계함수를 더 빠르게 처리할 수 있습니다. 그룹화된 데이터를 사용하여 계산하면 일반적으로 집계 함수의 실행 속도가 향상됩니다.

따라서, SQL에서 집계함수를 사용할 때 GROUP BY 구문을 사용하여 그룹화된 데이터를 계산하는 것이 일반적입니다.

이유는 이렇다고 하고


예시를 달라고했다

GROUP BY를 사용하지 않은 집계함수(SUM)을 select

SELECT customer, SUM(amount) AS total_sales
FROM orders;

GROUP BY를 사용한 구문

SELECT customer, SUM(amount) AS total_sales
FROM orders
GROUP BY customer;

orders 테이블

orders
+----+-----------+---------+
| id | customer  |  amount |
+----+-----------+---------+
| 1  | Alice     | 100.00  |
| 2  | Bob       | 50.00   |
| 3  | Alice     | 75.00   |
| 4  | Bob       | 25.00   |
| 5  | Charlie   | 200.00  |
+----+-----------+---------+

이 테이블에서 customer별로 총 판매액을 계산
Alice와 Bob이 중복되어있다.

GROUP BY (X)

+-----------+-------------+
| customer  | total_sales |
+-----------+-------------+
| Alice     | 350.00      |
| Bob       | 350.00      |
| Charlie   | 350.00      |
+-----------+-------------+

GROUP BY (O)

+-----------+-------------+
| customer  | total_sales |
+-----------+-------------+
| Alice     | 175.00      |
| Bob       | 75.00       |
| Charlie   | 200.00      |
+-----------+-------------+

GROUP BY를 넣지않으면 고객의 총 판매액이 아닌 모든 주문데이터의 총합이 계산!

-> 그룹화된 데이터를 사용하여 집계 함수를 실행하려면 GROUP BY 구문을 사용해야 합니다.

중간에 네트워크가 끊겨서 GPT가 이어서 답변을 잘 하지 못했다
데이터 값이 틀린게 보이지만 중요한건 내용을 이해하는것!

profile
기계 그잡채가 되고싶다

0개의 댓글