구글애드센스


데이터베이스 과제 문제풀이과정. STUDY



먼저 숙제에 필요한 테이블은 company,works,employee 테이블 3개이다.
각각의 애트리뷰트는
company-> company_name,city
works->empoyee_name,company_name,salary
employee->employee_name,street,city,manager_name
이상과 같다. 주목할점은 각각의 애트리뷰트들중에 외래키가 있고
포함관계가 있다는 것을 인지하고 있어야 한다.

a. First Bank Corporation에서 근무하고 있는 모든 직원들의 이름을 찾아라.

- 쉽다. 회사이름과 직원의 이름을 알아야하니까 works 테이블만 참고하면 된다.

b. First Bank Corporation에서 근무하고 있는 모든 직원들의 거주도시와 이름을 찾아라.

- a번문제에서 셀렉트만 약간 수정하면 된다.

c. First Bank Corporation에서 근무하고 있는 직원 중 10,000 이상을 벌고 있는 사람의 거주도시와 거리(street) 및
이름을 구하라. (First Bank Corporation에서 받는 급여 급여가 10,000 이상인 직원을 뜻함)

- 조건절에서 약간의 추가만 하면 된다.

d. 근무하고 있는 회사와 같은 도시에 살고 있는 모든 직원의 이름을 찾아라.

- 직원과 회사 이름과 직원의 도시와 회사의 도시가 모두 필요하다.
중요한것은 from절에서 몇개의 테이블을 추가하면 그 테이블이 join된다. 그래서 각 테이블의 애트리뷰트들을
비교해가면서 추려나가는 것이다. join 시키면 join된 테이블의 애트리뷰트를 참고하면 다른 테이블이기도 하지만
하나의 테이블이기도 하다는 것을 명심해야한다. where 절의 첫번째 테이블을 기준으로 놓고 생각하면 편하다.

e. 직원의 관리자(manager)와 동일한 거리와 도시에 살고 있는 직원의 이름을 찾아라.

- 직원의 관리자의 거리와 도시정보 또 직원의 거리와 도시정보가 있는 테이블 두개를 비교하면 된다.
즉 employee 테이블 두개를 join후 참고해서 자기자신을 비교하면 된다.

f. First Bank Corporation에 근무하지 않는 모든 직원들의 이름을 찾아라.

- 여러 회사를 다닐 경우가 있으므로 그 경우는 제외해줘야 한다.

g. Small Bank Corporation의 모든 직원들보다 더 많이 버는 직원들의 이름을 찾아라.(한 직원이 여러 군데 회사를
다닐 경우 급여 총액으로 비교하는 것이 아니라 회사 각각의 급여로 비교하세요.)  

- . sbc의 최대 임금을 받는 직원보다 많은 금액을 받는 직원을 all을 이용해 조사한다.
 

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

- all을 이용해서 group by로 비교한다.

j. 가장 많은 직원을 고용한 회사의 이름을 찾아라.

- 회사이름을 카운트 해서 가장 큰녀석을 찾아낸다. 중요한 것은 집성함수를 사용해서 그 집성함수를 비교할때는
반드시 having 절에서 해야한다는 점이다. 잊지 말자~

k. 임금 지급액이 가장 적은 회사의 이름을 찾아라.

-  min값을 갖고있는 회사이름을 찾는다.

l. First Bank Corporation의 평균임금보다 평균적으로 더 높은 임금을 지급하는 회사의 이름을 찾아라.

- having 절을 쓰려면 그룹바이는 필수적으로 들어가줘야 한다.
 비교하려는 것이 집성함수이고 비교할 단위가 키인지 애트리뷰트인지 잘 따져야 한다.




덧글

댓글 입력 영역