Group / Order by
집계함수란 ?
: 여러행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수
집계 함수 | 사용 목적 |
COUNT(*) | NULL 값을 포함한 행의 수를 출력한다. |
COUNT(표현식) | 표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력한다. |
SUM([DISTINCT | ALL] 표현식) | 표현식의 NULL 값을 제외한 합계를 출력한다. |
AVG([DISTINCT | ALL] 표현식) | 표현식의 NULL 값을 제외한 평균을 출력한다. |
MAX([DISTINCT | ALL] 표현식) | 표현식의 최대값을 출력한다. |
MIN([DISTINCT | ALL] 표현식) | 표현식의 최소값을 출력한다. |
STDDEV([DISTINCT | ALL] 표현식) | 표현식의 표준 편차를 출력한다. |
VARIAN([DISTINCT | ALL] 표현식) | 표현식의 분산을 출력한다. |
🦊 Group By
: 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화 할 속성을 지정
SELECT [DISTINCT] 컬럼, 그룹 함수(컬럼)
FROM 테이블명
WHERE [조건]
GROUP BY [Group 대상]
주의)
1. SELECT 절에 그룹 함수와 컬럼명이 같이 기술된 경우 해당 컬럼은 반드시 GROUP BY절에 그룹화되어야 한다.
2. 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다.
3. GROUP BY 절에서는 SELECT 절과는 달리 ALIAS 명을 사용할 수 없다.
🦊 Having 절
: GROUP BY를 통해 묶인 그룹에 대해 조건을 부여
일반 조건은 WHERE 절에 기술하지만 그룹 함수를 포함한 조건은 HAVING 절에 기술한다.
SELECT [DISTINCT] 컬럼, 그룹 함수(컬럼)
FROM 테이블명
WHERE [조건]
GROUP BY [Group 대상]
HAVING [Group 함수 포함 조건]
🦊 Order by
: SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬하여 출력
SELECT [DISTINCT] 컬럼, 그룹 함수(컬럼)
FROM 테이블명
WHERE [조건]
GROUP BY [Group 대상]
HAVING [Group 함수 포함 조건]
ORDER BY[정렬대상 [ASC/DESC]]
(* ASC : 오름차순 / DESC : 내림차순 )
주의 )
1.기본적인 정렬 순서는 오름차순 ASC
2.오라클에서는 NULL 값을 가장 큰 값으로 간주하여 오름차순으로 정렬했을 경우 가장 마지막에,
MSSQL 에서는 NULL 값을 가장 작은 값으로 간주하여 오름차순으로 정렬했을 경우 가장 처음에 위치한다.
🦊 GROUP BY 와 HAVING 절까지 기술한 SELECT 구문을 해석해보면 ?
1. from 절에 기술한 테이블에서
2. where 절에 기술한 조건에 해당하는 내용들만 정리하고
3. 정리된 내용들을 가지고 group by 절에 나열된 컬럼에 대해서 그룹을 만든다.
4. 만들어진 그룹별로 having절에 기술된 그룹함수로 계산하여 having절 조건에 맞는 그룹만 추리고
5. 추려진 그룹들을 order by 절에 잇는 조건으로 정렬시킨다.
6. 마지막으로 select절에 있는 그룹화된 컬럼 또는 그룹함수를 화면에 출력한다.