※ select (해석 순서 1 → 2 → 3 → 4 → 5)
select [distinct] [컬럼1, 컬럼2,.....][as 별명][ || 연산자][*] --- 6
from 테이블명 --- 1
[where 조건절] --- 2
[group by 컬럼명] --- 3
[having 조건절] --- 4
[order by 컬럼명 asc|desc ] --- 5
group by : 그룹함수(max, min, sum, avg, count..)와 같이 사용
having : 묶어놓은 그룹의 조건절
ex1) 사원테이블에서 급여의 평균을 구하시오
조건) 소수 이하는 절삭, 세자리 마다 콤마(,) 표시
사원급여평균
---------------
6,461
select to_char(trunc(avg(salary), 0), '99,999') as 사원급여평균 from employees;
ex2) 부서별 급여평균을 구하시오
조건1) 소수 이하는 반올림
조건2) 세자리 마다 콤마, 화폐 단위(₩)로 표시
조건3) 부서별로 오름차순 정렬하시오
조건4) 평균급여가 5000이상인 부서만 표시하시오
부서코드 평균급여
--------------------------
10 ₩8,600
select department_id as 부서코드,
to_char(round(avg(salary), 0), 'L99,999,999') as 평균급여
from employees
group by department_id
having avg(salary) >= 5000
order by department_id asc;
ex3) 부서별 급여평균을 구해서 사원명(last_name), 부서별 급여평균을 출력하시오 – X
(에러 메시지 : group by 표현식이 아닙니다. -> 그룹으로 묶은 애들만 select로 올 수 있다. but, 여기서는 그루핑 시킨적이 없는 last_name이 왔기 때문에 에러가 뜬 것
so, group by를 쓰면 select에는 그루핑을 시켰거나, 그룹함수를 쓴 애들만 올 수 있다.)
select last_name, avg(salary)
from employees
group by department_id;
★ last_name 때문에 error - group by절에 없는 것을 select에 조회하면 error
[문제1] job_id별 급여의 합계를 구해서 job_id, 급여합계를 출력하시오
ex4) 비효율적인 having절
10과 20부서에서 최대급여를 받는 사람의 최대급여를 구하여 정렬하시오
department_id max_salary
------------------------------------
10 4400
20 13000
select department_id, max(salary) as max_salary
from employees
group by department_id
having department_id in(10, 20)
order by department_id;
전체 부서에 대해 그룹을 잡아서 최대급여를 구한 후에 부서가 10과 20인 것을 추려내기 때문인 것
select department_id, max(salary) as max_salary
from employees
where department_id in(10, 20)
group by department_id
order by department_id;
부서번호가 10과 20인 것만 골라내서 그룹잡기 때문에 속도가 좀 빠르다
--문제1
select job_id, to_char(sum(salary), '999,999') as 급여합계 from employees group by job_id;
'데이터베이스 > Oracle' 카테고리의 다른 글
| [Oracle] 서브쿼리 (0) | 2023.08.07 |
|---|---|
| [Oracle] UNION, UNION ALL, INTERSECT, MINUS (0) | 2023.08.07 |
| [Oracle] Join(조인) (0) | 2023.08.02 |
| [Oracle] DDL / DML / DCL (0) | 2023.08.02 |
| [JDBC] 웹과 오라클DB 연동하기 (0) | 2023.08.01 |
댓글