바닥코딩
그룹 함수(GROUP FUNCTION) 본문
그룹함수(GROUP FUNCTION)
그룹함수는 결산개념의 업무를 가지는 원가나 , 판매 시스템의 경우 보통 소계, 총계, 합계, 총 합계 순위, 레벨 등 결산할 수 있는 파일을 만드는 것이 중요한 업무중에 하나이다. 개발자들이 이런 보고 파일을 만드는 것을 하려면 SQL에 포함된 대장기능을으로 작성을 하거나 여러단계로 UNION, UNION ALL 을 거치며 복잡한 단계를 거쳐야 한다. 그렇지만 그룹함수를 사용한다면 하나의 SQL로 테이블을 한번만 읽고 원하는 레포트 출력을 만들 수 있다 또한 이러한 GROUP 함수와 CASE문을 적절히 조합하여 사용하면 원하는 포맷의 보고서를 작성하는 것도 용이하게 할 수 있다.
대표적인 GROUP FUNTION 의 종류및 활용
1.ROLLUIP
ROLLUP 함수는 일반적으로 GROUP BY 절과 같이 사용되며 GROUP BY절에 의해서 그룹 지어진 집합 결과에 대해 좀 더 상세한 정보를 반환하는 기능을 수행한다 SELECT 절 중에 ROLLUP을 사용함으로써 SELECT된 데이터와 그것의 총 합을 구할 수 있다
이전 포스팅 내용에서 mariaDB sample 데이터 베이스 내에서 group by절을 작성해 보겠다 또 앞으로 작성할 SQL 쿼리는 GITHUB에 업로드 하겠다
https://github.com/Kim-Dong-Kyu/sql_test_code
예를 들어 특정 직원의 매출액의 합계를 구하고 싶을 경우를 생각해보자 일단 salaries 테이블의 내용은 아래와 같다
총 2,674,976개의 row가 있는 이 테이블에서 emp_no가 43624,254466,47978 인 직원의 판매 정보만 가져와 합계를 보고 싶다면 아래와 같은 쿼리를 작성해야 할 것이다
그런데 만약 선택한 emp 들의 합계를 기록하는 sub row를 만들고 싶을 경우가 있을 수 있다 이럴 경우 사용하는 것이 ROLLUP 함수 이다
2.CUBE 함수
ROLLUP 함수에서 다지 subtotal 만을 생성했다면 CUBE 함수는 결합가능한 모든 값에 대해 다차원 적인 집계를 생성한다 하지만 ROLLUP에 비해 시스템에 많은 부담을 주기 때문에 데이터 양이 많다면 사용을 지양한다 또한 CUBE 함수는 ROLLUP 달리 그룹 인수의 순서가 달라져도 물론 행간의 순서는 바뀔 수 있지만 결과는 동일하다
위와 같은 코드를 통해 해당하는 모든 경우에 대한 소계 합게를 확인할 수 있다
GROUPING 함수는 파라미터 평가값이 NULL 이면 1 아닐경우 0을 반환하는 함수 입니다
'데이터 베이스 > SQL' 카테고리의 다른 글
계층형 질의 (0) | 2020.03.12 |
---|---|
서브쿼리 (0) | 2020.03.10 |
STANDARD SQL과 집합 연산자(SET OPERATOR) (0) | 2020.03.04 |
Group by , Having 절 (0) | 2020.03.03 |
mysql/mariaDB 덤프 받아 사용하기 (0) | 2020.03.03 |