티스토리 뷰

DB/SQL

SQL - 그룹함수

xoo | 수진 2023. 7. 27. 19:05

그룹함수

 

  1. 그룹핑 방법
  2. 기본적으로 테이블은 하나로 묶여 있음 - 그룹함수를 제한없이 사용할 수 있다.
가. 자동으로 묶임
나. 명시적으로 묶임 - 요청 text가 ~별로 요청하면 무조건 묶어야 된다. 예)학년별, 부서별, 성별, ... - group by 표현식

 

해석 순서

⑤ SELECT 컬럼명 | 함수식
① FROM 테이블명 [ + JOIN ]
② WHERE 컬럼명 | 함수식 비교연산자 비교값
③ GROUP BY 컬럼명
④ HAVING 그룹함수식 비교연산자 비교값
⑥ ORDER BY 컬럼명 | 순번 | 별칭 정렬기준

 

 

SUM 함수

널(null)값을 제외한 해당 컬럼 값들의 총합을 구하는 함수
인자로 DISTINCT를 사용하면 중복된 값을 제외하고 총합 계산이 처리된다.
ALL은 중복된 값을 모두 포함하여 총합계산이 처리되며 일반적으로 생략하고 사용된다.

SUM( DISTINCT | ALL | 컬럼명 )
SELECT SUM(DISTINCT salary),SUM(ALL salary), SUM(salary)
FROM employees;

 

 

AVG 함수

NULL값을 제외한 평균을 구한다.
인자로 DISTINCT를 사용하면 중복된 값을 제외하고 평균 계산이 처리된다.
ALL은 중복된 값을 모두 포함하여 평균계산이 처리되며 일반적으로 생략하고 사용된다.

AVG( DISTINCT | ALL | 컬럼명 )
SELECT SUM(salary), AVG(salary)
FROM employees;

 

 

MAX 함수와 MIN 함수

다른 함수와 다르게 숫자 데이터 뿐만 아니라 문자 및 날짜 데이터에도 사용이 가능하다.

MAX( DISTINCT | ALL | 컬럼명 ) 
MIN(DISTINCT | ALL | 컬럼명 )
SELECT MAX(salary), MIN(salary)
FROM employees;
SELECT MIN( hire_date ), MAX( hire_date)
FROM employees;

 

 

COUNT 함수

테이블에서 조건을 만족하는 행의 개수를 반환하는 함수

COUNT( DISTINCT | ALL | 컬럼명 | * ) 
SELECT COUNT(last_name), COUNT(commission_pct)
FROM employees;

 

 

 


 

 

GROUP BY

특정 컬럼값을 기준으로 그룹으로 묶을 때 사용하는 방법

SELECT [ 단순 컬럼 ,] 그룹함수 , 그룹함수2
FROM 테이블명
[WHERE 조건식][GROUP BY 단순 컬럼]
[ORDER BY 표현식];
-- 명시적 그룹핑 - 부서번호
select department_id, max(salary), min(salary), sum(salary), avg(salary), count(*)
from employees
group by department_id
order by 1;

SELECT department_id, SUM(salary)
FROM employees
group by department_id;

SELECT department_id
FROM employees;

SELECT SUM(salary)
FROM employees;

 

 

GROUP BY절을 작성할 때 알아야 될 작성 지침
■ SELECT절 뒤에 사용할 수 있는 컬럼은 GROUP BY뒤에 기술된 컬럼이거나 그룹함수가 적용된 컬럼만 사용 가능하다.
■ WHERE 절을 사용하여 행을 그룹으로 그룹핑(Grouping)하기 전에 제외 시킬 수 있다.
■ 그룹으로 묶은 후 행을 제외 시키려면 HAVING절을 사용한다.
■ GROUP BY 절 뒤에는 컬럼 별칭(alias) 및 컬럼 순서 위치값을 사용할 수 없다.
■ WHERE 절에는 그룹함수를 사용할 수 없다

 

 


 

 

 

HAVING

WHERE절은 SELECT문에서 조건을 지정하여 조건과 일치하는 데이터만 추출할때 사용되며 HAVING 절은 GROUP BY절에 의해서 생성된 결과 중에서 조건과 일치하는 데이터를 추출할 때 사용한다.

SELECT [ 단순 컬럼 ,] 그룹함수 , 그룹함수2
FROM 테이블명
[WHERE 조건식][GROUP BY 단순 컬럼]
[HAVING 조건식][ORDER BY 표현식];
-- where 절에는 그룹함수 사용 불가
SELECT department_id as id, SUM(salary)
FROM employees
--where SUM(salary) > 30000  
group by department_id
having SUM(salary) > 30000;

'DB > SQL' 카테고리의 다른 글

SQL - 단일행/복수행 서브쿼리  (0) 2023.07.30
SQL - 서브쿼리(sub query)  (0) 2023.07.28
SQL - 날짜함수, 변환함수, 조건함수  (0) 2023.07.27
SQL  (0) 2023.07.27
DB와 Oracle  (0) 2023.07.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/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
글 보관함