MySQL

MySQL - 집계함수와 그룹화

쿠쿠s 2022. 3. 2. 23:06

테이블은 https://www.w3schools.com/mysql/trymysql.asp?filename=trysql_select_all  이곳을 참고하고 있습니다!

 

MySQL Tryit Editor v1.0

WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, and Opera. If you use another browser you will still be able to use our Try SQL Editor, but a different version, usin

www.w3schools.com

 

집계 함수

- 집계함수는 다음과 같이 종류가 있고, NULL값은 집계하지 않습니다.

 

함수 설명
MAX 가장 큰 값
MIN 가장 작은 값
COUNT 갯수 (NULL값 제외)
SUM 총합
AVG 평균 값

 

 

 

OrderDetails 라는 테이블이 있습니다. 2155개수의 컬럼이 있는데  집계함수를 사용하여 Quantity를 나열해 보겠습니다.

 

예제 테이블

 

SELECT
  MAX(Quantity),
  MIN(Quantity),
  COUNT(Quantity),
  SUM(Quantity),
  TRUNCATE(AVG(Quantity),2)
FROM OrderDetails;

- 집계함수 5가지 사용

 

 

 

출력 결과

 

 

 

위와 같이 최대값, 최소값, 개수, 합계, 평균값 이 잘 나오는 것을 확인 할 수 있습니다.

참고로 여기서 TRUNCATE 함수를 사용했는데  TRUNCATE(N, n) 가 있으면 N을 소숫점 n자리 까지 선택한다는 뜻으로 소수점 2자리를 출력하도록 만들었습니다.

 


 

그룹화 - GROUP BY

GROUP BY - 유형별로 개수를 알고싶을 때 컬럼의 데이터를 그룹화 할 수 있습니다.

 

 

 

컬럼 그룹화

SELECT 컬럼
FROM 테이블
GROUP BY 그룹화할 컬럼;

 

조건 처리 후 컬럼 그룹화

SELECT 컬럼
FROM 테이블
WHERE 조건식
GROUP BY 그룹화할 컬럼;

 

컬럼 그룹화 후 조건 처리

SELECT 컬럼
FROM 테이블
GROUP BY그룹화할 컬럼
HAVING 조건식;

 

조건 처리 후 그룹화 후 조건 처리

SELECT 컬럼
FROM 테이블
WHERE 조건식
GROUP BY 그룹화할 컬럼
HAVING 조건식;

여기서 WHERE 나 HAVING 둘다 조건식이긴 한데 WHERE은 그룹하기 전 데이터이고, HAVING은 그룹 후 집계에 사용됩니다!

 

 

 

 

예제

- 아래와 같이 활용할 수 있습니다.

SELECT 
 CategoryID,
 MAX(Price) as '비싼거',
 MIN(Price) as '싼거',
 TRUNCATE(AVG(Price), 2) AS Aver
FROM Products
WHERE Price > 10
GROUP BY CategoryID
HAVING Aver > 30

- Products 테이블에서 Price 가 10 이상인 항목을 CategoryID로 그룹화 하여 평균이 30이상인 값들을 SELECT 문에 선언된 대로 컬럼을 선택하여 출력하도록 만들었습니다.

 

 

출력결과

 

 

 

 

 

 

'MySQL' 카테고리의 다른 글

MySQL - View  (0) 2022.03.21
MySQL - 기본키(Primary Key) , 외래키 (Foreign Key)  (0) 2022.03.21
MySQL 기초 - 간단한 문법  (0) 2022.02.25