반응형

select ename, eno, to_char(sal, '$999,999') 급여$,
                   to_char(comm, '$999,999') 보너스$,
                   to_char(hdate, 'YYYY/MM/DD') 입사일 
from emp;
where

insert into emp (eno, ename, sex, job, mgr, hdate, sal, comm, dno)
values ('1001', '문시현', '남', '모델링', null, to_date('1991/02/01','YYYY/MM/DD'), 4500, 520, '10');
->>날짜는 반드시 to_date로 입력해줘서 오라클이 YYYY/MM/DD 형식이라고 인식 시켜줘야한다.

그룹 함수와 HAVING절

MAX 값들 중에 최대 값을 반환한다. MAX(컬럼)
MIN 값들 중에 최소 값을 반환한다. MIN(컬럼)
AVG 평균 값을 계산한다. AVG(컬럼) -  null 이있으면 정확하게 계산 못함 (행이 없다고 인식함)
COUNT 반환된 행의수를 계산한다. COUNT(컬럼 | *) - null 이있으면 정확하게 계산 못함 (행이 없다고 인식함)
SUM 합계를 계산한다. SUM(컬럼)
STDDEV 표준편차를 계산한다.(Standard deviation) STDDEV(컬럼)
VARIANCE 분산을 계산한다. VARIANCE(컬럼)

그룹 함수를 사용하는 경우 고려 사항
 - NULL값은 무시된다.
 - 반드시 단 하나의 값만을 반환한다.
 - GROUP BY 설정 없이 일반 컬럼과 기술될 수 없다.

예제 1. 사원의 급여 평균을 검색한다.
select avg(sal) 평균급여, round(avg(sal)) 평균급여
from emp;

예제 2. 사원들에게 지급된 보너스 총합과 보너스 평균을 검색한다. 
 SQL> select sum(comm) 총액, round(avg(comm)) 평균, count(comm) 수령인원,
  2  round(avg(nvl(comm,0))) 환산평균, count(*) 전체인원
  3  from emp;
>>>> 평균, 환산평균이 같아야하는데 다름 >> null이 있어서 값이 다름

예제 3. 10번 부서원들보다 급여가 높은 사원을 검색한다.



그룹 함수와 GROUP BY절
SQL> SELECT [DISTINCT/ALL] 컬럼 or 그룹함수, ...
 2 FROM 테이블
 3 WHERE 조건
 4 GROUP BY Group대상
 5 ORDER BY 정렬대상 [ASC/DESC]

예제 4. 업무별 평균 급여, 평균 연봉과 부서별 평균 연봉을 검색한다.

예제 5. 부서별로 급여 평균의 최대 값과 최소 값을 검색한다. 

예제 6. 그룹 대상 컬럼과 그룹 함수를 이용한 검색 결과 확인

예제 7. 각 부서별 최소 급여를 받는 사원의 정보를 검색한다.

실습
1. 각 학과별 학생 수를 검색한다. 
select major 학과, count(*) 학생수
from student
group by major;

!2. 화학과와 생물학과 학생 4.5 환산 평점의 평균을 각각 검색한다.

select major 학과, round(avg(avr*4.5/4.0)) 환산평균학점
from student
where major ='생물'
group by major;


!3. 부임일이 10년 이상 된 직급별(정교수, 조교수, 부교수) 교수의 수를 검색한다. 
select orders 직급,  count(*) 인원수
from professor
group by orders;


!4. 과목명에 화학이 포함된 과목의 학점수 총합을 검색한다.
select cname 과목명, round(sum(st_num)) 학점수_총합
from course
group by cname;

 
!5. 화학과 학생들의 기말고사 성적을 성적순으로 검색한다.
select
from
group by

 
6. 학과별 기말고사 평균을 성적순으로 검색한다. 
select major, round(avg(result)) 평균_점수
from student a, score b
where a.sno=b.sno
group by major
order by 2 desc;

7. 30번 부서의 업무별 연봉의 평균을 검색한다. 단 출력 양식은 소수이하 두 자리까지 통일된 형식으로 출력한다.
 
8. 물리학과 학생 중에 학년별로 성적이 가장 우수한 학생의 평점을 검색한다. 
9. 학년별로 환산 평점의 평균값을 검색한다. 단 출력 양식은 소수이하 두 자리까지 통일된 양식으로 출력한다. 
10. 화학과 1학년 학생 중 평점이 평균 이하인 학생을 검색한다.


그룹 함수와 HAVING

SQL> SELECT [DISTINCT/ALL] 컬럼 or 그룹함수, ... 2 FROM 테이블
3 WHERE 조건
4 GROUP BY Group대상
5 HAVING <그룹 함수 포함 조건>
6 ORDER BY 정렬대상 [ASC/DESC];



반응형

+ Recent posts