SQL 그룹함수, 집계함수

구름·2022년 12월 17일
0

SQL

목록 보기
4/7
post-thumbnail

그룹함수

: 동일한 값에 대해 그룹핑해서 처리하는 함수
group by절, 특정 컬럼을 정의 할 경우, 해당 컬럼의 동일한 값을 그룹핑해서 연산

📌집계함수

SUM합계를 구하는 함수
AVG평균을 구하는 함수
MAX최대값을 출력
MIN최소값을 출력
COUNT레코드 수 ( 한 라인의 값이 저장된 ) , ROW (행)
  • 집계함수를 컬럼에 사용하면 단일행으로 출력됨.
  • 집계 함수는 NULL값0으로 자동처리해서 연산됨
select SUM(commission), AVG(commission), MAX(commission), MIN(commission)
from employee;

group by

: 컬럼에 동일한 값을 그룹핑해서 처리

🌵 구조 (🚨순서 주의)

	select 컬럼명 
    from 테이블명 ,(가상으로 생성된 테이블)
    where 조건 
    group by 그룹핑 할 칼럼 
    having group by 를 사용해서 나온 결과를 조건 처리 
    order by 정렬
💡 group by 와 having은 무조건 같이 쓰여야 함
select SUM(salary) 부서별월급합계, round(AVG(salary),2)부서별월급평균, 
MAX(salary) 부서별최대월급, MIN(salary)부서별최소월급,dno
from employee
group by dno    --dno컬럼의 동일한 값을 그룹핑
order by dno;

Having 절

having : group by를 사용해서 나온 결과를 조건으로 출력

where : 테이블의 값을 조건을 주어서 가지고 올때 사용

💡 having 절에서 별칭이름을 사용할 경우 오류 발생 <==<<주의>>

  • 20번 부서는 제외하고 부서별 합계, 평균, 최대값, 최소값을 구하되 부서별 최소월급이 1000만원 이상인 것만 출력

select sum(salary) 부서별합계, round(avg(salary)) 평균,
max(salary) 최대값, min(salary) 최소값,dno
from employee
where dno not in (20)
having min (salary) >= 1000
group by dno
order by dno;

👉 count 함수

count 함수 : 레코드수, row (행) 의 수

  • NULL은 카운트 되지 않는다.
  • NOT NULL 컬럼은 NULL 값을 넣을 수 없다.
  • NOT NULL 정의된 컬럼을 카운트 해야한다.
  • 테이블의 전체 레코드 수를 출력 시 : NOT NULL 로 지정된 컬럼이나, * 를 사용해서 Count 해야한다.
  • 중복되지 않은 직업의 개수 ⇒ distinct를 칼럼명 앞에 기술
-- 중복되지 않은 직업의 개수 구하기 
select count(distinct job) as "직업 종류의 개수"
from employee;

select count ( eno ) from employee; -- NOT NULL로 정의된 컬럼 
select count ( * ) from employee;

직업의 개수 출력 (중복된 값 제거)

select count(distinct job) 
from employee;

--부서의 개수 
select count(distinct dno)
from employee;
profile
내가 보려고 하는 업데이트

0개의 댓글