다중행 함수???
—> 함수
—> 함수 —>
—> 함수
- 여러개의 함수가 입력되어서 하나의 행으로 출력 되어지는 함수
→ 그룹함수는 NULL 값을 무시합니다.
그룹함수를 사용하려면 GRoup by 절을 사용해야한다.
MAX (최대값 출력하기)
예제 : 사원 테이블에서 최대 월급만 출력
select max(sal)
from emp;
문제: 직업이 세일즈 맨 인 사원들 중에 최대월급
select max(sal)
from emp
where job = 'SALESMAN';
옆에 세일즈맨이 뜨도록
select job, max(sal)
from emp
where job = 'SALESMAN';
→ 이렇게 하면 에러가 난다
이유는?단일그룹의 그룹함수가 아니다! 마지막 실행이 select 절이 마지막 이기때문에 where 절에서 추려온 SALESMAN 이 하나만 나오려 하는데 직업이 여러개가 나오려 하기때문에 오류가 난다.
select job, max(sal)
from emp
where job = 'SALESMAN'
group by job;
해결하려면 group by 절을 사용한다. 쿼리 실행 순서는 (where 절 다음 순서인 3번째)
→ select 절에 그룹함수와 더불어 컬럼명을 기술하고자 할 때는 반드시 group by 절에 해당 컬럼명을 적어주고 실행해야 오류를 피할 수 있습니다.
Group by (데이터를 그루핑 하는 역할을 합니다.)
문제 : 직업, 직업별 최대월급을 출력하시오
select job, max(sal)
from emp
group by job;
문제: 우리 반 테이블 에서 class_type 과 타입별 최대 나이를 출력
select class_type, max(age)
from emp14
group by class_type
order by class_type asc ;
문제 : 부서번호, 부서번호별 최대 월급 최대월급이 높은것부터
select deptno, max(sal)
from emp
group by deptno
order by max(sal) desc;
문제 : 입사년도와 년도별 최대월급을 출력
select to_char(hiredate, 'RRRR'), max(sal)
from emp
group by to_char(hiredate, 'RRRR');
'Oracle > SQL' 카테고리의 다른 글
SQL 다중행 함수 - 그룹함수 (AVG) 평균값 구하기 (0) | 2021.11.19 |
---|---|
SQL 다중행 함수 - 그룹함수 (MIN) 최소값 (0) | 2021.11.19 |
SQL 단일행 함수 - 일반함수 ( case when ~ then~ else~end as ) 파생컬럼생성 (0) | 2021.11.19 |
SQL 단일행 함수 - 일반함수 ( Decode ) (0) | 2021.11.19 |
SQL 단일행 함수 - 일반함수 (NULL 을 처리하는 NVL, NVL2) (0) | 2021.11.19 |