데이터베이스 과제 중 모호했던 문제 다시 풀이.

i. 근무하고 있는 회사의 평균 임금보다 더 많이 버는 직원들의 이름을 찾아라.

이 문제의 핵심은 직원들의 이름을 찾되 자기가 일하는 회사라는 조건과 평균 임금이라는 조건이 있다.

즉..
select a.employee_name // 직원의 이름을 찾는데
from works a, (select company_name,avg(salary) as umkeke
from works
group by company_name) t // works의 투플변수 a와 회사이름과 그 회사의 급여평균으로 이루어진 테이블의 투플변수 t로
where a.company_name=t.company_name and a.salary>t.umkeke;

라는 식으로 쿼리문을 작성하는것이다.
다시 말해서 from 절의 역할이 가장 중요한데 우리가 정작 찾으려고 하는 정보만이
융합된 형태의 테이블을 카티션곱 시켜놓고 그 안에서 where 절을 이용해 해결한다는 것.

참 그리고 집성함수는 그 이름 자체만으로 지정할 수가 없는 것 같다.
그러니까 from의 select 절에서 umkeke 라는 이름으로 리네임을 해줘야만 그것으로 참고하는게
가능했다.

또 view의 삭제는 오라클 9i 기준으로 drop table 로는 안되는 것 같다.
drop table을 썼을 때 에러뜨는게 해당 이름의 "뷰"나 테이블을 찾을 수 없다고 해서
나는 뷰까지 지워지는 건데 내게 권한이 없다거나 이상한 이유때문에 안지워지는 줄 알았는데
drop view 라는 명령어가 따로 있었다 -_-;;;;;;;; 젠장..

그리고 rename 시키는 것이 은근 유용하게 작용할 때도 있는 것 같다.
리네임과 투플 변수를 사용하니까 갑자기 표현할 수 있는 한계가 훨씬 늘어난 기분.
재밌다 +_+)~

요딴식?

by muzie | 2007/04/21 21:21 | STUDY | 트랙백 | 덧글(0)

트랙백 주소 : http://muzie.egloos.com/tb/3128439
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶