-
[한기교] SQL 활용 필기(11) - 집합연산자, 집단연산자비전공자 공부일기/:: DB - SQL 2020. 5. 4. 14:44
< 집합 연산자 >
ㅁ 집합 연산자의 개념
: 테이블을 구성하는 튜플 집합에 대한 테이블의 부분집합을 반환하는 연산자
ㅁ 집합 연산자의 종류
- UNION : 합집합
- INTERSECT : 교집합
- EXCEPT : 차집합 (Oracle에서는 MINUS로 사용)
ㅁ UNION과 UNION ALL
- 집합 연산자를 대상 테이블을 집합으로 봄
- 따라서 결과도 집합임 (중복을 허용하지 않음)
- 필요에 따라서 중복된 결과도 보고 싶은 경우 (UNION ALL을 사용)< 외부 합집합 >
ㅁ 합병 호환성
- ∪, ∩, - 연산의 피연산자(릴레이션)들이 지켜야 할 제약 조건
ㅁ 합병 호환성의 불일치
- 두 질의 결과는 합병 호환성을 만족하지 않음
- 합병 호환성이 만족되지 않는 두 테이블의 합집합 구하기 : 외부 합집합(U+)
ㅁ SQL에서의 외부 합집합
- 두 질의 결과의 속성 수와 타입이 일치되게 만듦
- NULL은 모든 속성에서 사용할 수 있는 속성값임
- 이를 이용하여 강제로 동일한 구조가 되게 함ㅁ 집단 함수
: 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 그룹화 하여 그 그룹 별 통계값을 출력하는 함수
- SUM : 그룹의 합계
- AVG : 그룹의 평균
- COUNT : 그룹의 개수
- MAX : 그룹의 최대값
- MIN : 그룹의 최소값
- STDEV : 그룹의 표준편차
- VAR : 그룹의 분산- 분산(VAR)
: 각 값이 평균과 얼마나 떨어져 있는지에 대한 통계값
각 값과 평균의 차에 대한 차(즉, 편차)의 제곱의 평균(sumi=1,n (xi- M)2)/N
- 표준 편차(STDEV)
: 분산의 경우 편차에 대한 제곱으로 나타냄으로 평균과의 단위가 맞지 않음
단위를 맞추기 위하여 분산의 제곱근을 표준편차로 사용함STDEV = VAR1/2
- COUNT(*)
: 테이블에서 조건을 만족하는 행의 개수를 반환하는 함수
- COUNT(속성명)
: 속성값이 NULL아닌 속성값의 개수
- COUNT(DISTINCT 속성명)
: 속성값이 NULL이 아니며 중복되지 않는 속성값들의 개수< 집단 연산자 >
ㅁ GROUP BY
: 특정 속성을 기준으로 테이블 전체를 그룹으로 나누기 위한 절SELECT 컬럼_리스트 FROM 테이블명 WHERE 조건 GROUP BY 컬럼_리스트
- SELECT 절에는 집단 연산자나 GROUP BY에 사용한 속성명 만을 사용할 수 있음
- 공통되는 속성값으로 그룹핑을 했으므로, 각 그룹에서 개별 튜플을 접근할 수 없음ㅁ HAVING
- 각 그룹에 대한 제약 조건을 기술할 때 사용
- HAVING 절은 GROUP BY 절의 종속절
- WHERE 절은 테이블 전체에 대한 제약 조건을 나타냄
ㅁ 다중 속성 GROUP BY
- 하나 이상의 속성들을 이용하여 그룹을 나누고, 그룹별로 다시 서브 그룹을 나누고자 할 때GROUP BY 컬럼1, 컬럼2, …, 컬럼n
ㅁ ROLLUP 연산자
--- GROUP BY 절의 그룹 조건에 따라서 그룹핑 하고 각 그룹에 대한 부분합을 구하는 연산자
--- GROUB BY절에 n개의 속성 명이 있으면, n+1개의 그룹핑 조합이 나옴ㅁ CUBE 연산자
: GROUP BY 절의 그룹 조건에 따라서 그룹핑하고 각 그룹의 조합에 따른 부분합을 구하는 연산자
- GROUB BY 절에 n 개의 속성명이 있으면 2n개의 그룹핑 조합이 나옴
ㅁ GROUPING SETS 함수
- 경우에 따라서 여러 개의 GROUP조건을 표시하고 싶은 경우, 부서,직급별 합을 보고 싶지 않은 경우 GROUPING SETS 함수를 이용'비전공자 공부일기 > :: DB - SQL' 카테고리의 다른 글
[한기교] SQL 활용 필기(13) - 인덱스와 뷰 (0) 2020.05.05 [한기교] SQL 활용 필기(12) - 순위 계산 (0) 2020.05.05 [한기교] SQL 활용 필기(10) - 중첩 질의문 (0) 2020.05.04 [한기교] SQL 활용 필기(9) - JOIN (0) 2020.05.04 [한기교] SQL 활용 필기(8) - 트랜잭션, TCL (0) 2020.05.03