SQL_GROUP BY, HAVING, ORDER BY
1.GROUP BY 문법
- 특정 컬럼(표현식)을 기준으로 튜플(행)을 그룹화(=묶어서)하여 각각 단일행으로 표기
- 실제로 출력되는 튜플(행)이 감소되어 입력할 수 있는 컬럼이 제한됨. (HAVING , ORDER BY , SELECT 에서 제한)
대신 집계함수(=다중행 함수)로 처리한 컬럼은 HAVING , ORDER BY , SELECT 에도 입력이 가능
2.집계함수의 종류 (COUNT() , AVG() , SUM() , MAX() , MIN())
1) COUNT(expr)
- 그루핑할 컬럼 기준으로 행의 개수를 출력합니다.
- 다른 집계함수와 달리 * 을 expr에 쓸 수 있습니다.
- 모든 자료형에 이용가능 합니다.
2) MAX(expr) , MIN(expr)
- 그룹 기준으로 입력한 expr 에 대해 최대값이나 최소값을 출력합니다.
- NULL 데이터는 무시합니다. (모두 NULL 이면 NULL 출력)
- 모든 자료형에 이용가능 합니다.
3) AVG(expr)
- 그룹 기준으로 입력한 expr 에 대해 평균값을 출력합니다.
- NULL 데이터는 무시합니다. (모두 NULL 이면 NULL 출력)
- 숫자형에만 이용가능 합니다.
4) SUM(expr)
- 그룹 기준으로 입력한 expr 에 대해 합계값을 출력합니다.
- NULL 데이터는 무시합니다. (모두 NULL 이면 NULL 출력)
- 숫자형에만 이용가능 합니다.
3.HAVING 문법
- 집계가 완료된 대상을 필터링하는 문법
- 집계함수에 대해 조건을 줄 수 있다.
- WHERE절에서는 집계함수를 사용할 수 없다. (WHERE 절은 GROUP BY 보다 먼저 실행되기 때문)
7.ORDER BY 문법
- 특정 컬럼을 기준으로 데이터를 오름차순/내림차순 정렬 (여러 컬럼 동시 사용 가능)
- 예시1) TB_PRD 테이블을 PRD_AMT 기준으로 오름차순으로 정렬하여 아래와 같이 출력
SELECT PRD_ID
, PRD_NAME
, PRD_TYPE
, PRD_AMT
FROM TB_PRD
ORDER BY PRD_AMT ;
- 예시2) TB_PRD 테이블을 PRD_AMT 기준으로 내림차순으로 정렬하여 아래와 같이 출력
SELECT PRD_ID
, PRD_NAME
, PRD_TYPE
, PRD_AMT
FROM TB_PRD
ORDER BY PRD_AMT DESC ;
- 예시3) TB_PRD 테이블을 PRD_TYPE 별로 오름차순 정렬하되 , 같은 타입일 경우 PRD_AMT 순으로 내림차순으로 정렬하여 아래와 같이 출력
SELECT PRD_ID
, PRD_NAME
, PRD_TYPE
, PRD_AMT
FROM TB_PRD
ORDER BY PRD_TYPE, PRD_AMT DESC ;
- 컬럼이름 외에 AS 명칭이나 숫자로도 표현이 가능