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
반응형
'Programming > SQL' 카테고리의 다른 글
[MySQL] 정규표현식 검색하기 REGEXP, LIKE (2) | 2021.06.30 |
---|---|
[MySQL] 날짜 요일로 변환하기 (0) | 2021.06.25 |
[MySQL] SQL 변수 생성 및 활용 (0) | 2021.06.11 |
[MySQL] 중복 데이터 찾기 및 제거 (2) | 2021.05.30 |
SQL 연습 사이트 추천 (듀토리얼, 문제) (8) | 2021.05.30 |
댓글