본문 바로가기
Programming/SQL

[MySQL] 그룹 함수 다루기

by 코딩하는 금융인 2021. 6. 22.

Sample Data : Products

SQL Statement Site : https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all


그룹 함수

테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수

복수행 함수라고 불리며 아래와 같이 여러 가지 종류의 함수가 있음.

 

그룹 함수 규칙

  • 반드시 하나의 값만을 반환한다.
  • NULL 값은 무시된다.
  • NULL 값이 무시되지 않으려면 NVL, NVL2와 같은 함수를 이용한다.
  • GROUP BY 설정 없이 일반 컬럼과 기술될 수 없다.

그룹 함수의 종류

함수 이름 의 미
COUNT 입력되는 데이터들의 건수를 출력
SUM 입력되는 데이터들의 합계값을 출력
AVG 입력되는 데이터들의 평균값을 출력
MAX 입력되는 데이터들 중 최고 값을 출력
MIN 입력되는 데이터들 중 최저 값을 출력
STDDEV 입력되는 데이터 값들의 표준 편차값 출력
VARIANCE 입력되는 데이터 값들의 분산값 출력
ROLLUP 입력되는 데이터들의 소계값을 자동으로 계산해서 출력
CUBE 입력되는 데이터들의 소계 및 전체 총계를 자동 계산 후 출력
GROUPING 해당 칼럼이 그룹에 사용되었는지 여부를 1 또는 0으로 반환
GROUPINGSET 한번의 질의로 여러개의 그룹화 가능

 

◈ 그룹 함수 예제

SELECT count(*) "총건수",
	   sum(price) "가격합",
       round(avg(price),2) "평균가격",
       max(price) "최대가격",
       min(price) "최소가격" 
       from products

 

◈ 예제 결과

총건수 가격합 평균가격 최대가격 최소가격
77 2222.71 28.87 263.5 2.5

GROUP BY 구문

특정 컬럼 (속성) 을 기준으로 그룹화하여 조회할 때 주로 사용됨.

컬럼별로 특정 값을 검색하고 싶거나 특정 컬럼에서 어떠한 그룹이 형성되는지 확인할 수 있음.

 

기본 구조

더보기

SELECT [DISTINCT] 컬럼, 그룹 함수(컬럼)

FROM 테이블명

[WHERE 조건]

[GROUP BY Group대상]

[ORDER BY 정렬대상 [ASC/DESC]]

 

◈ GROUP BY 예제1

SELECT CategoryID, round(avg(Price),2) "평균가격" FROM Products
GROUP BY CategoryID

 

◈ 예제 결과

CategoryID 평균가격
1 37.98
2 23.06
3 25.16
4 28.73
5 20.25
6 54.01
7 32.37
8 20.68

 

◈ GROUP BY 예제 2

SELECT CategoryID, SupplierID, round(avg(Price),2) "평균가격" FROM Products
GROUP BY CategoryID, SupplierID

 

◈ 예제 결과 2

CategoryID SupplierID 평균가격
1 1 18.5
1 7 15
1 10 4.5
1 12 7.75
1 16 15.33
1 18 140.75

* 여러 컬럼을 그룹화할 때, 컬럼들의 값이 같아야 같은 그룹으로 묶인다.


앞서 설명드린 함수와 GROUP BY 구문은 SQL 쿼리에 정말 많이 사용됩니다.

그룹 함수 구문에 대해 더 많은 예제를 원하시는 분들은 아래의 예제를 참고하시면 됩니다. 감사합니다.

 

References

 

 

반응형

댓글