티스토리 뷰

DB

SQL - GROUP BY, HAVING, ORDER BY

조용한스택 2020. 7. 8. 13:11

1. 집계 함수

집계 함수 사용 목적
COUNT(*) NULL 값을 포함한 행의 수를 출력
COUNT(표현식) 표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력
SUM([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 합계를 출력
AVG([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 평균을 출력
MAX([DISTINCT | ALL] 표현식) 표현식의 최대값 출력 (문자, 날짜 데이터도 가능)
MIN([DISTINCT | ALL] 표현식) 표현식의 최소값 출력 (문자, 날짜 데이터도 가능)
STDDEV([DISTINCT | ALL] 표현식) 표현식의 표준 편차를 출력
VARIAN([DISTINCT | ALL] 표현식) 표현식의 분산을 출력

2. GROUP BY 와 HAVING 의 특성

- 집계 함수를 쓰려면 GROUP BY 를 통해 소그룹별 기준을 정해야 한다

- 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다

- GROUP BY 절에서는 SELECT 절과는 달리 ALIAS 명을 사용할 수 없다

- 집계 함수는 WHERE 절에는 올 수 없다. (GROUP BY보다 WHERE가 먼저 수행되기 때문!)

- HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다

 

3. ORDER BY

* SELECT 절에 없는 Column을 ORDER BY 절에서 사용할 수 있다
* 인라인 뷰에 정의된 select Column을 메인 쿼리에서 사용할 수 있다. (정의되지 않은 건 안됨)
* GROUP BY 절 사용시 SELECT 절에 일반 칼럼을 사용할 수 없다.

SELECT JOB, SAL
FROM EMP
GROUP BY JOB
HAVING COUNT(*) > 0
ORDER BY SAL;

SELECT JOB, SAL ; *
ERROR: GROUP BY 표현식이 아니다.

 

 

* GROUP BY 절 사용시 ORDER BY 절에 일반 칼럼을 사용할 수 없다.

SELECT JOB
FROM EMP
GROUP BY JOB
HAVING COUNT(*) > 0
ORDER BY SAL;

ORDER BY SAL; *
ERROR: ORDER BY 표현식이 아니다.

 

 

* GROUP BY 절 사용시 ORDER BY 절에 집계 칼럼을 사용할 수 있다.

'DB' 카테고리의 다른 글

반정규화  (0) 2020.07.22
SQL - JOIN (1)  (0) 2020.07.08
SQL - JOIN (0)  (0) 2020.07.08
SQL  (0) 2020.07.08
Tibero Query  (0) 2020.03.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함