Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- jdbc환경설정
- emmet환경설정
- 내일배움카드
- 국민취업지원제도
- 배열
- 회원탈퇴
- 내배카
- 검색기능
- 회원정보수정
- 로그아웃
- jdbc설정
- mvc
- 비밀번호암호화
- 인코딩
- 별찍기
- 정처기
- jsp기본
- 비밀번호변경
- github
- live server 환경설정
- forward
- 국취제
- redirect
- 국비학원
- Git
- 페이지 재사용
- 권한변경
- 입력메소드
- 관리자회원조회
- 페이징
Archives
- Today
- Total
기록
*35일차 (2) 본문
@DQL2
*GROUP BY
- 별도의 그룹지정이 없다면 그룹함수는 전체를 하나의 그룹으로 간주한다.
- 세부적 그룹지정을 group by절을 이용할 수 있다.
-- 부서별 급여 평균
select
dept_code,
avg(salary)
from
employee
group by
dept_code
order by
dept_code;
-- 부서별 사원수를 조회
-- from - where - group by - having - select - order by
select
nvl(dept_code, '인턴') dept_code,
count(*)
from
employee
group by
dept_code
order by
1;
-- 성별 사원수를 조회
-- 가상컬럼을 기준 그룹핑 가능
select
employee.*,
decode(substr(emp_no, 8, 1), '1', '남', '3', '남', '여') 성별
from
employee;
select
decode(substr(emp_no, 8, 1), '1', '남', '3', '남', '여') 성별,
count(*) 사원수
from
employee
group by
decode(substr(emp_no, 8, 1), '1', '남', '3', '남', '여');
-- 부서별 직급별 인원수
select
dept_code,
job_code,
count(*)
from
employee
group by
dept_code, job_code
order by
1, 2;
-- 부서별 성별 인원수
select
nvl(dept_code, '인턴') dept_code,
decode(substr(emp_no, 8, 1), '1', '남', '3', '남', '여') gender,
count(*)
from
employee
group by
dept_code, decode(substr(emp_no, 8, 1), '1', '남', '3', '남', '여')
order by
dept_code, gender;
*HAVING
- grouping한 결과행에 대해 조건절을 작성
-- 부서별 급여평균이 300만원 이상이 부서들만 조회(부서명, 급여평균)
select
dept_code,
avg(salary)
from
employee
group by
dept_code
having
avg(salary) >= 3000000;
-- 사원테이블에서 J3직급을 제외하고, 직급별 인원수가 3명이상인 직급의 정보를 조회(직급코드, 인원수, 급여평균)
select
job_code,
count(*),
trunc(avg(salary))
from
employee
where
job_code != 'J3'
group by
job_code
having
count(*) >= 3
order by
1;
--관리하는 사원이 2명이상인 매니져의 사원아이디와 관리하는 사원수를 출력하세요.
select
manager_id,
count(*)
from
employee
where
manager_id is not null
group by
manager_id
having
count(*) >= 2;
select
manager_id,
count(*)
from
employee
group by
manager_id
having
count(manager_id) >= 2;
-- 소계를 처리하는 rollup
select
nvl(job_code, '소계'),
count(*)
from
employee
group by
rollup(job_code)
order by
job_code;
select
-- dept_code,
-- grouping(dept_code), -- 0이면 실제 데이터, 1이면 rollup에 의해 생성된 데이터
decode(grouping(dept_code), 0, nvl(dept_code, '인턴'), 1, '총계') dept_code,
count(*)
from
employee
group by
rollup(dept_code)
order by
dept_code;
select
decode(grouping(dept_code), 0, nvl(dept_code, '인턴'), 1, '총계') dept_code,
decode(grouping(job_code), 0, job_code, 1, '소계') job_code,
count(*)
from
employee
group by
rollup(dept_code, job_code)
order by
dept_code, job_code;
'학원 > 강의' 카테고리의 다른 글
*37일차(SET OPERATOR / 서브쿼리) (0) | 2022.03.18 |
---|---|
*36일차 (join) (0) | 2022.03.18 |
*35일차 (선택 / 그룹함수) (0) | 2022.03.16 |
*34일차 (where / 연산자 / 단일행처리함수) (0) | 2022.03.16 |
*33일차 - ncs테스트(네트워크 프로그래밍 구현) (0) | 2022.03.15 |