테이블은 https://www.w3schools.com/mysql/trymysql.asp?filename=trysql_select_all 이곳을 참고하고 있습니다!
집계 함수
- 집계함수는 다음과 같이 종류가 있고, 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 |