파게로그

[SQL] 집계함수(aggregate functions) 본문

콤퓨타 왕기초/SQLD/JDBC/Oracle DB

[SQL] 집계함수(aggregate functions)

파게 2021. 3. 31. 09:10

집계함수(aggregate function)는 단일한 행이 아니라 여러 행에 기반하여 함수가 적용된 결과를 반환한다. 주로 GROUP BY와 함께 쓰이며, 이는 질의의 대상인 테이블의 행을 분할하거나, 뷰를 여러 그룹으로 나누는 키워드이다. 이러한 각각의 그룹에 대해서 하나씩의 결과 행을 반환한다.

 

MAX

SELECT MIN(sal)
  FROM emp
  WHERE title = 'COOPERATOR';

 

 

 

MIN

SELECT title, MIN(sal) 최솟값
  FROM emp
  GROUP BY title
  ORDER BY 최솟값 DESC;

 

 

 

SELECT MIN(sal)
  FROM emp
  WHERE 1 = 2;

그룹 함수는 WHERE절의 조건이 거짓이어도, 즉 이를 만족하는 row가 하나도 없더라도, NULL 결과를 출력한다,

 

 

 

SELECT MAX(sal), AVG(comm), AVG(NVL(comm, 0))
  FROM emp;

그룹 함수는 null값을 무시한다. 따라서 AVG(comm)과 AVG(NVL(comm, 0))의 결과는 다르다.

 

 

 

SELECT title, SUM(sal) 합계
  FROM emp
  GROUP BY title
  HAVING SUM(sal) >= 8000;

title별 sal 합계
결과

그룹 함수로 조건을 줄 때에는 WHERE절 대신 HAVING절을 사용해야 한다. HAVING을 사용함으로써, 질의의 대상인 테이블이나 뷰의 개별적인 행의 값이 아닌, 집계함수가 적용된 결과를 기반으로 특정 그룹을 필터링할 수 있는 것이다.

 

 

 

SELECT COUNT(comm)
  FROM emp;

comm
결과

null인 row를 제외하고 센다.

Comments