오라클 DB(sql)_기초_11 (Group by)

데이터베이스 2021. 5. 1. 19:47

그룹함수(?) : 그룹당 1개의 결과값을 나타내주기 때문에 그룹함수라고 부름

  • AVG
  • COUNT
  • MAX
  • MIN
  • SUM
  • STDDEV
  • VARIANCE

<Avg, sum 함수>

Avg sum 숫자데이터만 연산가능함.

 

<min, max함수>

  • 아스키코드값을 비교하여 값을 비교함. 그러므로 모든 데이터타입에 사용 가능함.

 

 

<Count(*(column 써도 ))>

: 출력되는 테이블의 행수를 반환함

 

Count 경우 null값을 받아들이지 않고 계산하지 않는다.

Null값이 많은 경우는 nvl함수를 중첩시켜 사용해야 제대로 값을 얻을 있음.

 

****column 넣어서 계산하는 그룹함수는 전부다 null값을 무시함. Count(*) 경우는 행갯수를 반화하는 함수이기때문에 null값이 있는 행의 갯수도 반환하여 나타냄.

 

Distinct옵션을 사용(그룹함수 내부에서 받아들이는 값에 영향을 미치는) 있음.

Distinct 사용함에 따라 사원이 근무하는 부서의 갯수로 변경됨

 

(예제) 부서별 월급의 총합을 구하시오.

 department_id 그룹화 되어있찌 않기때문에 이러한 에러가 발생하게 .

 

Group by 사용해 group 만들어주어 그룹함수가 계산이 가능하도록 .

그룹함수가 쓰여지지 않은 column 나타나면 group_by절에 쓰여있어야함.

 

그룹화가 발생할때 select list 적혀있는 column 순서로 발생하여 뒤로 멀티플 그룹화가 진행된다.(select list 첫번째 column 있는게 가장먼저 그룹화 진행)

 

Where절은 행을 제한하기 때문에 그룹을 제한하는 조건문을 작성할 없음. 그룹을 제한할 없음.

 

Having 절은 그룹함수전용이므로 where 쓰듯이 뒤에 column명을 넣어주면 에러가 발생하게 . 무조건 뒤에 그룹함수가 쓰여야 .

 

그룹화 >> 중복제거, 멀티플중복제거, 그룹함수 추출을 위해 사용

admin