DB

SQL 문제-3

닉넥임 2013. 7. 22. 09:28
반응형

1. 관리자 아이디가 "100" 인 사원들의 "평균" 임금을 출력하시오.

  
2. 부서명이 "Accounting"인 사원들의 이름 명단(first_name 과 last_name 합쳐서)을 내림차순으로 출력하시오.

 

3. 부서가 "Finance"인 사원 중에서 최고 급여를 받는 사원(들)의 이름과 급여를 출력하시오.

 

결과 참고) Nancy  Greenberg 12008

 

3번 Where 조건문에서의 Hint)

 

부서 테이블에서 Finance 에 해당하는 부서 아이디를 구하는 select문을 작성한다.

위의 구문을 활용하여 사원 테이블에서 부서의 최고 연봉을 구하는 select문을 작성한다.

 

위의 조건만으로는 값이 "결과 참고"와 같이 출력되지 않고 중복될 수 있다.

이것을 막기 위해서는 아래의 조건을 "동시에(AND)" 만족하도록 위의 조건들과 더불어

부서 테이블에서 Finance 에 해당하는 부서 아이디를 구하는 select문을 재활용한다.

 




- 정답 : 


1. 관리자 아이디가 "100" 인 사원들의 "평균" 임금을 출력하시오.

 

SELECT AVG(salary) 
 FROM employees 
  WHERE  manager_id=100;
  
2. 부서명이 "Accounting"인 사원들의 
    이름 명단(first_name 과 last_name 합쳐서)을 
    내림차순으로 출력하시오.

 

SELECT (first_name || ' ' || last_name) "사원명"
    FROM employees
        WHERE department_id = (
                                                         SELECT department_id 
                                                            FROM departments
                                                                WHERE department_name 
                                                                                = 'Accounting'
                                                        )
        ORDER BY first_name DESC;

 

3. 부서가 "Finance"인 사원 중에서 최고 급여를 받는 사원(들)의 
    이름과 급여를 출력하시오.
    
SELECT (first_name || ' ' || last_name) "사원명", 
                 salary "급여"
   FROM employees
    WHERE  department_id =(
                                                        SELECT department_id
                                                            FROM departments
                                                            WHERE   
                                                                department_name
                                                                    ='Finance'
          )  AND  salary =(
                                        SELECT max(salary) 
                                            FROM employees
                                            WHERE  
                                                department_id = (
                                                            SELECT department_id
                                                                FROM departments
                                                                WHERE   
                                                                    department_name
                                                                        ='Finance'  
                                                 )
                                  );             

 

SELECT max(salary) 
    FROM employees
        WHERE  department_id = (
                                                            SELECT department_id
                                                                FROM departments
                                                                WHERE   
                                                                    department_name
                                                                        ='Finance'  
                                                        );

반응형

'DB' 카테고리의 다른 글

SQL명령어 (SELECT 의 SUBQUERY)  (0) 2013.07.30
SQL 명령어(단일함수)[미완]  (0) 2013.07.18
그룹 함수(GROUP BY)  (0) 2013.07.17
SQL명령어 (WHERE)  (0) 2013.07.12
SQL명령어 (SELECT)  (0) 2013.07.12