본문으로 바로가기

SQL문제풀이

category IT 프로그래밍 2018. 1. 2. 18:11


1. 사원 테이블에서 사원 번호, 이름, 급여 그리고 13% 증가된 급여를 모두 출력합니다. 

증가된 급여의 열 별명(레이블,헤딩)은 New Salary입니다.


답 : 

SELECT EMPNO,ENAME,SAL,SAL+(SAL*0.13)"New Salary"

FROM EMP;


2. 이름이 A,T, 또는 M으로 시작하는 모든 사원에 대해서 

   모두 소문자로 나타나는  사원의 이름과  이름 길이를 출력하는 질의를 작성하세요.    

   각각의 열에 Name, Length라는 레이블을 부여하세요.


답 :


SELECT LOWER(ENAME) as "Name",LENGTH(ENAME) as "Length" FROM EMP

where SUBSTR(ENAME,1,1) in('A','T','M');



3. 평균급여보다 더 많이 받는 사원의 부서에서 같이 근무하는 

사원 정보(부서명 포함)를 출력하는 질의(쿼리=SQL)를 작성하세요.  

답 :

SELECT e.*,D.DNAME

FROM EMP e INNER join DEPT d

on E.DEPTNO = D.DEPTNO

where e.DEPTNO IN

(SELECT DISTINCT EMP.DEPTNO FROM EMP

where SAL > (SELECT AVG(SAL) FROM EMP))

ORDER BY E.DEPTNO;


4. 각 사원의 동일한 근무지에서 근무하는 동료 사원의 이름과 부서번호를 출력하시오.

답:

SELECT E.ENAME,D.DEPTNO

FROM EMP e INNER join DEPT d

On E.DEPTNO = D.DEPTNO

where d.LOC IN 

(SELECT LOC FROM DEPT);








5. SCOTT 보다 입사일이 늦은 사원과 같은 부서에서 근무하는 사원들의 부서명,이름,급여를 출력하시오.

답:


select d.dname,e.ename,e.sal

from emp e,dept d

where e.deptno = d.deptno AND E.ENAME<>'SCOTT' and e.deptno =(select deptno from emp where hiredate >

                              (select hiredate from emp where ename = 'SCOTT'));


select d.dname,e.ename,e.sal

from (SELECT * FROM EMP WHERE  ENAME<>'SCOTT') e,dept d

where e.deptno = d.deptno and e.deptno =(select deptno from emp where hiredate >

                              (select hiredate from emp where ename = 'SCOTT'));



6.이름에 "K"자가 들어가는 사원들 중 가장 급여가 적은 사원의 부서명,사원명,급여를 출력하시오.

답:

SELECT E.ENAME, D.DNAME, E.SAL FROM EMP E, DEPT D 

WHERE E.DEPTNO = D.DEPTNO AND E.SAL = 

(SELECT MIN(SAL) FROM EMP E 

WHERE ENAME LIKE '%K%');



7.커미션 계약조건이 없는(커미션이 비어있음) 사원중  입사일이 가장 빠른 사원의 부서명, 사원명,입사일을 출력하시오.

답:

SELECT DNAME, ENAME, HIREDATE

FROM EMP E, DEPT D

WHERE E.DEPTNO = D.DEPTNO

AND HIREDATE = (SELECT MIN(HIREDATE) FROM EMP WHERE COMM IS NULL);



8. KING 의 급여에서 SCOTT의 급여를 뺀 결과보다 적은 급여를 받는 사원의 부서명,이름,급여를 출력하시오.

답 :

SELECT D.DNAME,E.ENAME,E.SAL 

FROM EMP E ,DEPT D

WHERE E.DEPTNO = D.DEPTNO AND SAL <= (

SELECT (SELECT SAL FROM EMP WHERE ENAME ='KING')-SAL FROM EMP WHERE ENAME ='SCOTT')ORDER BY E.SAL;








9. 커미션 계약조건이 있는 사원중 이름에 'N'자가 들어가는 사원의 최소급여를 받는 사원의 사원명, 부서명을 출력하시오.

답 :

SELECT ENAME,D.DNAME 

FROM EMP E,DEPT D

WHERE E.DEPTNO = D.DEPTNO

AND SAL=(SELECT MIN(SAL) FROM 

(SELECT ENAME,SAL FROM EMP WHERE COMM IS NOT NULL )) 

AND ENAME LIKE '%N%';


10. EMP 테이블에서 이름이 5글자인 사원중 급여가 가장 높은 사원의 이름,급여,부서명을 출력하시오.

SELECT ENAME, SAL, DNAME

FROM EMP E, DEPT D

WHERE E.DEPTNO = D.DEPTNO

AND SAL = (SELECT MAX(SAL) FROM EMP WHERE LENGTH(ENAME) = 5)

AND LENGTH(ENAME) = 5;







11. CLARK이 속한 부서의 평균 연봉보다 높은 사원중 입사일이 가장 빠른 사원의 부서명, 사원명, 연봉을 출력하시오.

답:

SELECT DNAME, ENAME, (SAL*12)+nvl(COMM,0) "연봉"

FROM EMP E, DEPT D

WHERE E.DEPTNO = D.DEPTNO

AND HIREDATE = (SELECT MIN(HIREDATE) FROM EMP 

WHERE (SAL*12)+nvl(COMM,0) > (SELECT AVG((SAL*12)+nvl(COMM,0)) 

FROM EMP WHERE DEPTNO = 

(SELECT DEPTNO FROM EMP WHERE ENAME = 'CLARK')));


 

12. 두번째로 많은 급여를 받는 사원의 이름과 급여를 출력하시오.

답:

SELECT ENAME,SAL 

FROM EMP

WHERE SAL =(SELECT MAX(SAL) FROM 

(SELECT ENAME,SAL FROM EMP

WHERE SAL <(SELECT MAX(SAL) FROM EMP)));


data-matched-content-rows-num="3" data-matched-content-columns-num="4" data-matched-content-ui-type="image_card_stacked"

--