[Oracle] 오라클 #6, 오라클함수(집계함수)
- Database/Oracle
- 2019. 2. 16. 01:08
오라클(SQL)함수
오라클에서 제공하는 기본 함수
집계함수, 문자열함수, 숫자함수, 날짜시간함수
집계함수
- 통계함수, 집약함수, 집합함수
- 집계결과를 만들어 낸다.
- 복수의 행을 입력받아 단일값을 반환한다.(***)
1.count() : 갯수
- number count(컬럼명)**
ex)
>> select count(*) from employees; - >employees 테이블에 존재하는 레코드의 수를 반환한다.
>> select count(*) from employees where 조건; - > 조건에 만족하는 레코드의 수를 반환한다.
- 이런식으로 where 조건을 붙여서 주로 사용한다.
2.sum() : 총합(누적)
- number sum(컬럼명)
- 해당컬럼의 총합 반환.
- 숫자 컬럼만을 대상으로..
ex)
>> select sum(weight)/count(*) as 평균몸무게 from tblname; -> sum함수와 count함수를 이용하여 평균값을 구한다.
>> select sum(name) from tblname; --ORA-00904: "NAME": invalid identifier : 문자열 데이터를 넣어서 에러 발생
>> select sum(ibsadate) from tblinsa; --ORA-00932: inconsistent datatypes: expected NUMBER got DATE : 날짜데이터를 넣어서 에러 발생
3.avg() : 평균
- number avg(컬럼명)
- 숫자컬럼을 대상으로
ex)
>> select avg(height) from tblname; -> 키에대한 평균을 낸다.
근데 주의점!!
avg 함수를 사용함에있어서 사람정보테이블에 있는 "사람의 키(cm)"를 평균내었는데! 여기에서 height 컬럼의 값이 null 인경우에는 어떻게 집계를 하는가??
-> 결과적으로 avg 함수는 null을 집계하지 않습니다. 즉, 키를 갖고있지 않은 사람은 분모에서 제외시킵니다. 예제를 한번 따라해보시길 바랍니다.
create table tblTest(
seq number primary key,
name varchar2(30) not null,
height number null
);
insert into tblTest values(1, '홍길동',170);
insert into tblTest values(2, '아무개',160);
insert into tblTest values(3, '임꺽정',150);
insert into tblTest values(4, '하하하',null);
select avg(height) from tblTest;
select sum(height)/count(*) from tblTest;
즉, 전체 4명중 키를 가지고 있는 사람은 3명인데, 이들을 평균내는 avg함수는 '하하하'를 빼버린다는 것이죠. avg 함수를 이용할때는 반드시 이점을 주의하셔야 한다는 점 잊지 마세요!! (물론 저 count(*)를 * -> height로 교체하면 결과는 당연히 같겠죠^^)
4.max() : 최댓값
5.min : 최솟값
- object max(컬럼값)
- object min(컬럼값)
- 해당 컬럼값들 중 가장 큰값 or 가장 작은값 반환
- 숫자, 문자, 날짜 등...
ex)
>> select max(height) from tblTest; -> 가장 큰 키는? -> 170
>> select min(height) from tblTest -> 가장 작은 키는? -> 150
- 이 부분도 위의 경우와 마찬가지로 null인 '하하하'는 제외되서 출력됩니다.
오늘의 꿀 정보!
- 오라클(DBMS)은 모든 식별자(테이블명,컬럼명,계정명,DB Object명)의 길이가 최대 30자 이내로 설정해야한다. 안그러면
--ORA-00972: identifier is too long
'Database > Oracle' 카테고리의 다른 글
[Oracle] 오라클 #8, 오라클 함수(문자열 함수) (0) | 2019.02.16 |
---|---|
[Oracle] 오라클 #7, 숫자함수와 날짜함수(feat.dual 테이블) (0) | 2019.02.16 |
[Oracle] 오라클 #5 SELECT문 - distinct, case문 (0) | 2019.02.09 |
[Oracle] 오라클 #4 SELECT문(2) - WHERE 절과 그 친구들(between, in, like, null) (0) | 2019.02.09 |
[Oracle] 오라클 #3 SELECT 문(1) - select 문이란? (0) | 2019.02.09 |