--통계함수 / 그룹함수
count(필드) <= null 포함시키지 않는다
count(*) <= 전체계산
sum(필드) : 합
avg(필드) : 평균
min(필드) : 최소값
max(필드) : 최대값
--그룹통계
select 그룹을 짓을 필드,통계함수 from 테이블
group by 그룹을 짓을 필드
having 조건(그룹합수에 대한 결과)
--산술처리 함수
ceil(실수) : 10.5 =>
floor(실수) :
round(값,소숫점자릿수) :
select ceil(10.5),floor(10.5),
10/6,round(10/6,1) 반올림, trunc(10/6,1) 잘라낸다
from dual;
select * from sawon
--사원테이블에서 전체사원수 구하기
select count(*) 사원수,count(sabun) 갯수, count(samgr) 관리자 from sawon;
--전체직원의 급여합계
select sum(sapay) 급여합계, avg(sapay) 급여평균 from sawon;
select sum(sapay) / count(*) 급여평균 from sawon;
--10,20,30,40번부서의 급여합계
select sum(sapay) 급여합계, count(*) 인원수 from sawon where deptno=10;
select sum(sapay) 급여합계, count(*) 인원수 from sawon where deptno=20;
select sum(sapay) 급여합계, count(*) 인원수 from sawon where deptno=30;
select sum(sapay) 급여합계, count(*) 인원수 from sawon where deptno=40;
--각부서별 급여합계 및 인원수 구해라..
--select * from sawon order by deptno
select deptno,count(*) 인원수,sum(sapay) 급여합계
from sawon
group by deptno -- 부서별로 그룹화
order by deptno ;
--성별 인원수
--select * from sawon order by sasex;
select sasex, count(*) from sawon
group by sasex
--부서별 성별 인원수
-- select * from sawon order by deptno,sasex; --1차,2차정렬
select deptno,sasex, count(*) from sawon
group by deptno,sasex
order by deptno,sasex ;
-- 직급별 인원수=> 그룹통계에 대한 조건절 having절
select sajob ,count(*) from sawon
group by sajob
having count(*)>=5 ;
--그룹통계는 연산필드에서도 적용
select * from gogek;
select substr(gojumin,8,1),count(*) from gogek
group by substr(gojumin,8,1)
--연산자 : case ~ when ~then ~end
select
case
when substr(gojumin,8,1) in('1','3') then '남자'
else '여자'
end
from gogek;
select
case substr(gojumin,8,1)
when '1' then '남자'
when '3' then '남자'
when '2' then '여자'
when '4' then '여자'
end as 성별
from gogek;
select
case
when substr(gojumin,8,1) in('1','3') then '남자'
else '여자'
end as 성별,
count(*) 인원수 from gogek
group by case
when substr(gojumin,8,1) in('1','3') then '남자'
else '여자'
end
--고객테이블에서 고객의 출생월별 인원수
select substr(gojumin,3,2) 월 from gogek;
select substr(gojumin,3,2) 월,count(*) from gogek
group by substr(gojumin,3,2);
--고객테이블에서 고객의 출생계절별 인원수
select substr(gojumin,3,2) 월,
case
when substr(gojumin,3,2) in('03','04','05') then '봄'
when substr(gojumin,3,2) in('06','07','08') then '여름'
when substr(gojumin,3,2) in('09','10','11') then '가을'
else '겨울'
end as 계절
from gogek;
select case
when substr(gojumin,3,2) in('03','04','05') then '봄'
when substr(gojumin,3,2) in('06','07','08') then '여름'
when substr(gojumin,3,2) in('09','10','11') then '가을'
else '겨울'
end as 계절,
count(*) 인원수
from gogek
group by
case
when substr(gojumin,3,2) in('03','04','05') then '봄'
when substr(gojumin,3,2) in('06','07','08') then '여름'
when substr(gojumin,3,2) in('09','10','11') then '가을'
else '겨울'
end
'Programming > Oracle' 카테고리의 다른 글
[6일차] 뷰(View) (0) | 2013.08.27 |
---|---|
[5일차-2] 날짜함수 정리 (0) | 2013.08.26 |
sqlDeveloper로 DB사용자 추가 하기 및 sql 질의 싱행해 보기 (0) | 2013.08.21 |
개발자가 필요한 오라클 간단 정리 (0) | 2013.08.21 |
sqlplus에서 유저 생성 시키기 예 (0) | 2013.08.20 |