새소식

인기 검색어

SQL

집계 함수 / 분석 함수

  • -
집계 함수
  • 여러 행으로부터 하나의 결괏값을 반환하는 함수이다.
  • SELECT 구문에서만 사용되며, 이전에 다룬 기본 함수들이 행(row)끼리 연산을 수행했다면, 집계 함수는 열(column)끼리 연산을 수행한다.
  • 주로 평균, 합, 최대, 최소 등을 구하는 데 사용된다. 

 

 

  1. COUNT
    • 특정한 기준을 충족하는 ROWS의 수 리턴
    • COUNT(*)를 제외하고 NULL 값은 세지 않는다.
    SELECT COUNT(컬럼)
    FROM 테이블명
    
    SELECT COUNT(DISTINCT 컬럼) -- 중복되는 값은 기존의 값은 남고 제거
    FROM 테이블명


  2.  AVG
    • 숫자형 COLUMN의 평균값을 리턴
    • NULL 값은 제외된다.
    • NULL 값을 데이터에서 제외하고 평균을 구하려면 AVG를 쓰면 된다. 하지만, NULL 값을 포함해서 평균을 구하려면 SUM으로 총합을 구한 후 COUNT(*)로 나눠야한다.
    SELECT AVG(컬럼)
    FROM 테이블명
    
    SELECT SUM(컬럼) / COUNT(*) -- NULL 값을 포함하여 평균을 구할 경우
    FROM 테이블명
  3. SUM
    • 숫자형 COLUMN의 총합을 리턴한다.
    • NULL 값은 제외된다.
    SELECT SUM(컬럼)
    FROM 테이블명
  4. MIN
    • 선택한 COLUMN의 가장 작은 값을 리턴
    SELECT MIN(컬럼)
    FROM 테이블명
  5. MAX
    • 선택한 COLUMN의 가장 큰 값을 리턴
    SELECT MAX(컬럼)
    FROM 테이블명



  6. GROUP BY
    • 테이블의 일부 행을 대상으로 집계 함수를 사용할 수 있다.
    SELECT 컬럼, SUM(컬럼)
    FROM 테이블명
    GROUP BY 컬럼
  7. HAVING
    • GROUP BY와 함께 쓰이는 조건문으로 집계 함수와 함께 사용가능하다.
    SELECT 컬럼, AVG(컬럼)
    FROM 테이블명
    GROUP BY 컬럼
    HAVING 'GROUP BY조건'

 

 

분석 함수
  • SELECT 절과 ORDER BY 구문에서 사용 가능
  • FROM / WHERE / GROUP BY 절에서 사용 불가
  • 쿼리 결과 SET을 대상으로 계산을 수행하는 함수

 

1. PARTITION BY : 분석 함수로 계산될 대상 로우 그룹(파티션)을 지정한다.

SELECT 
	USER_NO
	,USER_NAME
    ,USER_AGE
    ,SUN(USER_AGE) OVER(PARTITION BY USER_NO) USER_AGE_SUM
FROM USER

 

2. ORDER BY : 파티션 안에서의 순서를 지정

 

3. WINDOW... : 파티션으로 분할된 그룹에서 더 상세한 그룹으로 분할할 때 사용

 

 

 

 

집계 함수 VS 분석 함수

- 집계함수는 그룹별 최대, 최소, 합계, 평균, 건수 등을 구할 때 사용되며, 그룹별 1개의 행을 반환한다.

- 분석함수는 그룹 단위로 값을 계산한다는 점에서 집계 함수와 유사하지만, 그룹 마다가 아니라 결과 Set의 각           행마다 집계결과를 보여준다는 점에서 집계함수와 상당한 차이가 있다.

ex) group by 는 공통점을 가진 행끼리 묶어서 대표값만 나오기에 1개의 행
       partition by는 대표값만 나오는게 아니라 모든 행에 집계결과를 보여주기에 여러개의 행을 보여준다.

'SQL' 카테고리의 다른 글

[SQL] ROUND  (0) 2022.10.09
[SQL] 프로시저(Procedure)  (0) 2022.10.09
SELECT INTO  (0) 2022.09.21
SYNONYM  (0) 2022.08.26
중복 개수 확인하기.  (0) 2022.08.25
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.