본문 바로가기

데이터베이스(DB)/Oracle
[Oracle] 집계 함수, Group by절, Having절

//집계 함수, Aggregation Function

- WHERE 절에서는 집계 함수를 사용할 수 없다.

- MIN, MAX, SUM, COUNT, AVG


// MIN, MAX

- object max(컬럼명) / object min(컬럼명)

select max(height), min(height) from tblComedian; --숫자형
select max(name), min(name) from tblInsa; --문자형
select max(ibsadate), min(ibsadate) from tblInsa; --날짜형


- 최솟값 / 최댓값반환

- 숫자형, 문자형, 날짜형 모두 적용


- min

SELECT MIN(AGE) FROM MEMBER;

- max

SELECT MAX(AGE) FROM MEMBER;

// SUM

- number sum(컬럼명)

select sum(height) from tblComedian;


- 해당 컬럼의 합을 구한다.

- 숫자형만 적용 가능


SELECT SUM(AGE) FROM MEMBER;

select 
    sum(basicpay) as "지출 급여 합",
    sum(sudang) as "지출 수당 합",
--    sum(basicpay) + sum(sudang) as "총 지출"
    sum(basicpay + sudang) as "총 지출"
from tblInsa;

// AVG

- number avg(컬럼명)

select avg(basicpay) from tblInsa;


- 해당 컬럼의 평균값을 구한다.

- 숫자형만 적용 가능

- null 값은 제외함.


SELECT AVG(AGE) FROM MEMBER;

select 
    avg(population) as "평균1",
    sum(population) / count(*) as "평균2",
    sum(population) / count(population) as "평균3"
from tblCountry;

// COUNT

- number count(컬럼명)

select count(capital) from tblCountry;


- 결과 테이블의 레코드 수를 반환한다.

- null 레코드는 count에서 제외된다. 
    > select count(*) from tblCountry; 를 사용하면 일부 컬럼값이 null이어도 개수를 구할 수 있다.


SELECT COUNT(AGE) FROM MEMBER;

- ★★★case-end 이용하여 count

select 
    count(*) as 전체인원수,
    count(case
        when gender = 'm' then '1'
    end) as 남자인원수, 
    count(case
        when gender = 'f' then '1'
    end) as 여자인원수
from tblComedian;

//GROUP BY

- 기준을 설정하여 기준에 따라 묶을 수 있다.

- 집계 함수와 같이 사용하곤 한다.

- GROUP BY에 포함된 값과 집계함수는 함께 조회할 수 있지만, 그 외의 값은 사용할 수 없다.
    ~ SELECT REGDATE, COUNT(ID) FROM NOTICE GROUP BY WRITER_ID   > 불가!!!!!!

 


- 작성자별로 글을 몇 개 작성하였는지 카운트

SELECT WRITER_ID, COUNT(ID) COUNT FROM NOTICE GROUP BY WRITER_ID;

- 작성자별로 글을 몇 개 작성하였는지 카운트 + 내림차순으로 정렬하여 조회

SELECT WRITER_ID, COUNT(ID) COUNT FROM NOTICE  GROUP BY WRITER_ID ORDER BY COUNT(ID) DESC;

// HAVING절


- 회원별 게시글 수 조회(단, 게시글 수가 2개 미만인 레코드만 조회)

SELECT WRITER_ID, COUNT(ID) COUNT FROM NOTICE  GROUP BY WRITER_ID HAVING COUNT(ID) < 2;

'데이터베이스(DB) > Oracle' 카테고리의 다른 글

[Oracle] 서브 쿼리  (0) 2023.02.20
[Oracle] 순위 함수  (0) 2023.02.20
[Oracle] NULL 관련 함수, DECODE 함수  (0) 2023.02.19
[Oracle] 변환 함수  (0) 2023.02.19
[Oracle] 날짜 시간 함수  (0) 2023.02.18