dongdorodongdong
GROUP BY, HAVING, ORDER BY 본문
집계함수
- 특징
- 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 반환하는 함수 - COUNT(*)
- NULL값을 포함한 행의 수를 반환 - COUNT(표현식)
- 표현식의 값이 NULL 값인 것을 제외한 행의 수를 반환 - SUM(표현식)
- 합계를 반환 - AVG(표현식)
- 평균을 반환 - MAX(표현식), MIN(표현식), STDDEV(표현식), VARIAN(표현식)
- 최대, 최소, 표준 편차, 분산을 반환
GROUP BY
- 특징
- FROM, WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 통계정보를 얻을 때 사용
- GROUP BY로 소그룹 기준을 정한 후, SELECT절에 집계 함수 사용
- 집계 함수의 정보는 NULL값을 제외 후 수행
- GROUP BY 절에서는 Alias 명을 사용X
- GROUP BY 절로 소그룹 기준을 정한 후, WHERE절에서 조건을 주지 못한다. (HAVING절 사용) - 고려사항
-
SELECT DISTINCT deptno FROM emp;
SELECT deptno FROM emp GROUP BY deptno;는 똑같은 결과를 반환한다.
- 집계함수를 사용하여 그룹으로 구분할 때는 GROUP BY절을 사용하며, 특정 그룹 없이 중복 데이터를 제거할 경우에는 DISTINCT절을 사용하자!
HAVING
- 특징
- WHERE절의 조건 변경은 대상 데이터의 개수가 변경되므로 결과 데이터 값이 변경되지만, HAVING절의 조건 변경은 결과 데이터 변경은 없고 출력되는 레코드의 개수만 변경될 수 있다.
- GROUP BY 없이 사용하여서 오류가 발생하지는 않는다.
ORDER BY
- 특징
- ORDER BY절에 컬럼명 대신 SELECT 절에서 사용한 Alias명이나 컬럼순서의 정수도 사용 가능
- 오름차순(ASC)가 기본값
- Oracle
NULL값을 가장 큰 값으로 간주
- SQL Server
NULL값을 가장 작은 값으로 간주
SQL문장 실행 순서
- (FROM) 대상 테이블을 참조
- (WHERE) 대상 데이터가 아닌 것 제거
- (GROUP BY) 행들을 그룹화
- (HAVING) 그룹핑된 값의 조건에 맞는 것 출력
- (SELECT) 데이터 값을 출력 및 계산
- (ORDER BY) 데이터를 정렬