😺Data Base/😻 SQLD

[SQL] 다중 행 함수

디카페인라떼 2022. 11. 3. 23:42

본 강의를 수강 후 정리한 글입니다 .

https://www.youtube.com/playlist?list=PLlCujDgOz8x6nDWtRr5AlHWB9Xp-Lxf-z 

 

01. SQL 기본

#SQL기본 #SQLD #SQLP 이론적인 내용이 지루하다고 생각할 수도 있습니다. 하지만 SQL을 현장에서 능숙하게 활용할 수 있기 위해서는 기본적인 지식에 대한 기초를 튼튼하게 다져야 할 필요가 있습니

www.youtube.com


1. 그룹함수 - 구문

  • 구문 (SUM, AVG, MAX, MIN, COUNT, STDDEV, VARIANCE)
SELECT group_function(expr)
FROM tables ;

👉테이블로 부터 전체의 값을 불러들인 후 함수의 값을 구하고 결과는 한건만 출력됨.

👉테이블에 값이 없다면 COUNT = 0 / 나머지는 NULL 출력

 

SELECT group_function(expr)
FROM tables ; 
WHERE conditions ;

👉 조건을 만족시키는 데이터를 불러들인 후 함수의 값을 구하고 결과는 한건만.

👉 값이 없다면 COUNT = 0 / 나머지는 NULL 출력

 

SELECT c1, c2, c3, ... ,group_function(expr) 
FROM tables ; 
WHERE conditions 
GROUP BY c1, c2, c3 ... ;

👉 각 그룹별로 하나씩 출력

👉 값이 없다면 COUNT = 0 / 나머지는 NULL 출력

 

 

SELECT c1, c2, c3, ... ,group_function(expr) 
FROM tables ; 
WHERE conditions 
GROUP BY c1, c2, c3 ... 
HAVING conditions ;

👉 그룹별 조건에 맞는 함수 출력 

👉 GROUP BY 이후 HAVING으로 데이터 수를 더 줄임 

👉 GROUP BY 에 들어가지 않는 항목이 HAVING에 들어가면 에러!

 

2. 그룹함수 - 종류

  • group_function([DISTINCT] expr) <- NULL은 제외함 / 중복된 값 제거 시 DISTINCT사용
  • SUM (expr) : 합계
  • AVG(expr) : 평균
  • MAX(expr) : 최대
  • MIN(expr) : 최소
  • COUNT(expr) : 갯수
  • COUNT(*) : 전체 갯수
  • STDDEV(expr) : 표준편자
  • VARIANCE(expr) : 분산
    => 읽어들인 ROW 들의 수를 줄임!

 

ROLLUP
  • 소그룹 간의 합계를 계산하는 함수, GROUP BY로 묶은 각각의 소그룹 합계와 전체 합계를 모두 구할 수 있음
  • GROUP BY절에 명시한 모든 컬럼에 대한 소그룹의 합계를 구해주는 것이 아니고 맨 처음 명시한 컬럼에 대해서만 소그룹 합계를 구해줌
    •  ROLLUP ( c1, c2 ) : c1 과 c2 의 합계 / c1 / ( )
    •  ROLLUP ( (c1, c2), c3 ) :  괄호안에 있는 것을 하나의 컬럼으로 가정
    •  ROLLUP ( c1, c2, c3 ) : c1과 c2과 c3 의 합계 / c1 과 c2 의 합계 / c1 / ( )
GROUP BY ROLLUP(컬럼1, 컬럼2)

=

GROUP BY 컬럼1, 컬럼2
UNION ALL
GROUP BY 컬럼1
UNION ALL
모든 집합 그룹 결과

 

CUBE
  • 항목들 간의 다차원적인 소계
  • ROLLUP과 달리 GROUP BY절에 명시한 모든 컬럼에 대해 소그룹 합계를 계산
    • CUBE ( c1, c2 )  : c1 과 c2 의 합계 / c1 / c2 / ( )
    • CUBE ( (c1, c2), c3 ) : c1 과 c2과 c3 의 합계 / c1 과 c2 의 합계 / c3 / ( )
    • CUBE ( c1, c2, c3 ) : c1 과 c2과 c3 의 합계 / c1 과 c2 의 합계 / c1 / c2 과 c3 의 합계 / c2 / c3 / () 
GROUP BY CUBE(컬럼1, 컬럼2)

=

GROUP BY 컬럼1, 컬럼2
UNION ALL
GROUP BY 컬럼1
UNION ALL
GROUP BY 컬럼2
UNION ALL

모든 집합 그룹 결과

 

GROUPING SETS
  • 다양한 GROUP BY처리를 할 수 있음
  • ROLLUP 및 CUBE로 구현하는 것을 모두 할 수 있음.
  • GROUPING SETS 절에 지정된 모든 그룹을 계싼하고, 각 그룹의 결과를 UNION ALL로 조작하는 것과 유사

 

ORDER BY
  • 읽어들인 데이터를 정렬하기 위해서 사용
  • 맨 마지막에 작성/실행
  • 기술하지 않으면 기본적으로 오름차순 / 하나의 칼럼에 대해 둘 중 하나
  • 컬럼의 이름이 아닌 위치 또는 Alias를 사용할 수 있다.
  • Scalar 서브 쿼리도 사용할 수 있다.

 

 

'😺Data Base > 😻 SQLD' 카테고리의 다른 글

[SQL] JOIN  (0) 2022.11.04
[SQL] 단일 행 함수  (0) 2022.11.03
[SQL] WHERE 절  (0) 2022.11.02
[SQL] SQL 종류 - DML / TCL / DCL / TRANSACTION  (0) 2022.11.02
[SQL] 제약조건 / VIEW / SEQUENCE / SYNONYM / INDEX  (0) 2022.11.01