0906 java

정혜지·2022년 10월 5일

2022.09.06

-- 4.selectGroupFunction.sql
-- 그룹함수란?

/* 기본 문법
1. select절
2. from 절
3. where절

  • 그룹함수시 사용되는 문법
  1. select절 : 검색하고자 하는 속성
  2. from절 : 검색 table
  3. group by 절 : 특정 조건별 그룹화하고자 하는 속성
  4. having 절 : 그룹함수 사용시 조건절
  5. order by절 : 검색된 데이터를 정렬
  • 실행 순서
    */

-- 1. count() : 개수 확인 함수
-- emp table의 직원이 몇명?

-- ? comm 받는 직원 수만 검색

-- 2. sum() : 합계 함수
-- ? 모든 사원의 월급여(sal)의 합

-- ? 모든 직원이 받는 comm 합

-- ? MANAGER인 직원들의 월급여의 합

-- ? job 종류 counting[절대 중복 불가 = distinct]
-- 데이터 job 확인

-- 3. avg() : 평균
-- ? emp table의 모든 직원들의 급여 평균 검색

-- ? 커미션 받는 사원수, 총 커미션 합, 평균 구하기

-- 4. max(), min() : 최대값, 최소값
-- 숫자, date 타입에 사용 가능

-- 최대 급여, 최소 급여 검색

-- ? 최근 입사한 사원의 입사일과, 가장 오래된 사원의 입사일 검색
-- max(), min() 함수 사용해 보기

-- 오늘로부터 입사한지 가장 오래된 일수 계산?

-- **
/
group by절

  • 특정 컬럼값을 기준으로 그룹화
    가령, 10번 부서끼리, 20번 부서끼리..
    */

-- 부서별 커미션 받는 사원수

-- step01 : 완성된 기본 문장

-- step02 : deptno라는 부서 번호를 오름차순으로 정렬

-- step03 : 사원명도 검색

-- ? 부서별(group by deptno) (월급여) 평균 구함(avg())

-- ? 소속 부서별 급여 총액과 평균 급여 검색[deptno 오름차순 정렬]

-- ? 소속 부서별 최대 급여와 최소 급여 검색[deptno 오름차순 정렬]
-- 컬럼명 별칭에 여백 포함한 문구를 사용하기 위해서는 쌍따옴표로만 처리

-- having절 [ 조건을 주고 검색하기 ]
-- 그룹함수 사용시 조건문

-- 1. ? 부서별(group by) 사원의 수(count(*))와 커미션(count(comm)) 받는 사원의 수

-- 조건 추가
-- 2. ? 부서별 그룹을 지은후(group by deptno),
-- 부서별 평균 급여(avg())가 2000 이상인 부서의 번호와 평균 급여 검색

-- step01 : having 절 연습

-- step02 : deptno 로 정렬

-- step03 : avg(sal) 평균급여라는 별칭 부여, 평균 급여로 정렬

-- 3. 부서별 급여중 최대값(max)과 최소값(min)을 구하되 최대 급여가 2900이상(having)인 부서만 출력

-- rollup : 중간 합계 with rollup구문 사용되는

select ename
from emp
union
select deptno
from dept;

select ename
from emp
union all
select deptno
from dept;

select ename
from emp
union all
select ename
from emp;

profile
오히려 좋아

0개의 댓글