버터감자
오늘도 내 하루는
버터감자
전체 방문자
오늘
어제
  • 분류 전체보기 (139)
    • 🏃‍♀️ Do it ! (80)
      • TIL (73)
      • Project (5)
      • Certificate (2)
    • 📓 TechNote (52)
      • RPA (1)
      • Python (2)
      • JAVA (13)
      • Spring (11)
      • SQL (7)
      • Git & GitHub (6)
      • CS (0)
      • HTML & CSS & JavaScript (2)
      • Tools (9)
      • API (1)
    • 🔔 Error (7)
      • Error (7)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • foreach
  • 문제풀이
  • 안드로이드
  • 이것이자바다
  • 코틀린
  • 기본쿼리
  • 배열
  • 데이터베이스
  • SQL
  • 오라클
  • sqld
  • 부트스트랩
  • 스프링
  • dml
  • opacity
  • 포트폴리오
  • 객체지향
  • 버블소트
  • final필드
  • 홈페이지
  • 함수
  • 변수
  • 세션
  • 이클립스
  • 스택
  • 톰캣
  • 큐
  • callback
  • 만들기
  • 게시판

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
버터감자

오늘도 내 하루는

📓 TechNote/SQL

[SQL 기본쿼리] 연습 문제 풀이 4

2022. 12. 6. 12:44
728x90

📌 기본쿼리 4 문제

-- 사용문법이 대부분 JOIN, SUB QUERY 문법위주 연습.
-- EMP e : EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
-- DEPT d : DEPTNO, DNAME 부서명, LOC 지역
-- FROM EMP e, DEPT d
-- WHERE e.DEPTNO = d.DEPTNO 같은 부서
 
-- 1. 최소급여를 받는 사원과 같은 부서에서 근무하는 모든 사원명, 부서명을 출력

-- 2. SCOTT보다 입사일이 늦은 사원과 같은 부서에서 / 근무하는 사원들의 부서명, 이름, 급여를 출력
               
-- 3. 이름에 'K'자가 들어가는 사원들 중 급여가 가장 적은 사원의 부서명, 사원명, 급여를 출력   
                                
-- 4. 커미션 계약이 없는 사원중 입사일이 가장 빠른 사원의 /부서명, 사원명, 입사일을 출력
                                    
-- 5. 위치가 시카고인 부서에 속한 사원들의 이름과 부서명을 출력.
                            
-- 6. KING의 급여에서 SCOTT의 급여를 뺀 결과보다 적은 급여를 받는 사원의 부서명, 이름, 급여를 출력
          
-- 7. DALLAS에 위치한 부서에 속한 사원의 / 총사원수, 평균급여,전체급여,최고급여,초저급여를 구하세요.

-- 8. 커미션 계약조건이 있으며 이름에 'N'자가 들어가는 사원들 중 급여가 가장 적은 사원의 / 사원명, 급여,부서명을 출력

-- 9. ALLEN 보다 입사일이 빠른 사원의 부서명,사원명을 출력

-- 10. EMP 테이블에서 이름이 5글자인 사원중 급여가 가장 높은 사원의 이름, 급여 , 부서명을 출력
 
-- 11. CLARK 이 속한 부서의 평균 연봉보다 급여가 높은 사원중 입사일이 가장 빠른 사원의 부서명, 사원명, 급여를 출력
                                                
-- 12. ALLEN의 부서명을 출력

 
-- 13. 이름에 J가 들어가는 사원들 중, 급여가 가장 높은 사원의 // 사원번호, 이름, 부서명, 급여, 부서위치를 출력
-- AND 절 위치

 
-- 14. 두번째로 많은 급여를 받는 사원의 이름과 부서명,급여를 출력
-- 두번째로 많은 급여? -> 급여가 MAX보다 작은 값들 중 MAX!

-- 15. 입사일이 2번째로 빠른 사원의 부서명과 이름, 입사일을 출력

-- 16. DALLAS에 위치한 부서의 사원 중 최대 급여를 받는 사원의 급여에서 최소 급여를 받는 사원의 급여를 뺀 결과를 출력

🧐 버터감자 기본쿼리 문제풀이 

-- 사용문법이 대부분 JOIN, SUB QUERY 문법위주 연습.
-- EMP e : EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
-- DEPT d : DEPTNO, DNAME 부서명, LOC 지역
-- FROM EMP e, DEPT d
-- WHERE e.DEPTNO = d.DEPTNO 같은 부서
 
-- 1. 최소급여를 받는 사원과 같은 부서에서 근무하는 모든 사원명, 부서명을 출력
    SELECT ENAME, dname
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND e.deptno =  ( SELECT DEPTNO FROM EMP WHERE SAL =( SELECT MIN(SAL) FROM EMP));
    
-- 2. SCOTT보다 입사일이 늦은 사원과 같은 부서에서 / 근무하는 사원들의 부서명, 이름, 급여를 출력
    SELECT dname, ENAME, SAL
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND e.deptno = ( SELECT deptno FROM EMP WHERE HIREDATE > ( SELECT HIREDATE FROM EMP WHERE ENAME ='SCOTT'));
     
-- 3. 이름에 'K'자가 들어가는 사원들 중 급여가 가장 적은 사원의 부서명, 사원명, 급여를 출력   
    SELECT dname, ENAME, SAL
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND SAL = ( SELECT MIN(SAL) FROM EMP WHERE ENAME LIKE '%K%');
                           
-- 4. 커미션 계약이 없는 사원중 입사일이 가장 빠른 사원의 /부서명, 사원명, 입사일을 출력
    SELECT dname,ENAME, HIREDATE
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND HIREDATE = ( SELECT MIN(HIREDATE) FROM EMP WHERE COMM IS NULL);
                                        
-- 5. 위치가 시카고인 부서에 속한 사원들의 이름과 부서명을 출력.
    SELECT dname,ENAME
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND E.deptno = ( SELECT deptno FROM DEPT WHERE LOC ='CHICAGO');
                                
-- 6. KING의 급여에서 SCOTT의 급여를 뺀 결과보다 적은 급여를 받는 사원의 부서명, 이름, 급여를 출력
    SELECT dname,ENAME, SAL
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND SAL < ( (SELECT SAL FROM EMP WHERE ENAME = 'KING') - ( SELECT SAL FROM EMP WHERE ENAME ='SCOTT'));
    
-- 7. DALLAS에 위치한 부서에 속한 사원의 / 총사원수, 평균급여,전체급여,최고급여,초저급여를 구하세요.
    SELECT COUNT(*), AVG(SAL), SUM(SAL), MAX(SAL), MIN(SAL)
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND e.deptno = ( SELECT DEPTNO FROM DEPT WHERE LOC ='DALLAS');

-- 8. 커미션 계약조건이 있으며 이름에 'N'자가 들어가는 사원들 중 급여가 가장 적은 사원의 / 사원명, 급여,부서명을 출력
    SELECT dname,ENAME, SAL
    FROM DEPT D, EMP E
    WHERE d.deptno = e.deptno
    AND SAL = ( SELECT MIN(SAL) FROM EMP WHERE ENAME LIKE '%N%')
    AND COMM = ( SELECT COMM FROM EMP WHERE COMM IS NOT NULL);


-- 8. 커미션 계약조건이 있으며 이름에 'N'자가 들어가는 사원들 중 급여가 가장 적은 사원의 / 사원명, 급여,부서명을 출력
-- 서브쿼리 위치 
    SELECT ENAME, SAL, DNAME
    FROM EMP e, DEPT d
    WHERE e.DEPTNO = d.DEPTNO
    AND SAL = (SELECT MIN(SAL) FROM EMP WHERE COMM IS NOT NULL) 
    AND ENAME LIKE '%N%';
 
-- 9. ALLEN 보다 입사일이 빠른 사원의 부서명,사원명을 출력
    SELECT dname, ENAME
    FROM EMP e, DEPT d
    WHERE e.DEPTNO = d.DEPTNO
    AND HIREDATE < ( SELECT HIREDATE FROM EMP WHERE ENAME = 'ALLEN');

-- 10. EMP 테이블에서 이름이 5글자인 사원중 급여가 가장 높은 사원의 이름, 급여 , 부서명을 출력
    SELECT dname,ENAME, SAL
    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
    FROM EMP e, DEPT d
    WHERE e.DEPTNO = d.DEPTNO
    AND HIREDATE = ( SELECT MIN(HIREDATE) FROM EMP WHERE SAL > ( SELECT AVG(SAL) FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'CLARK')));
                                                
-- 12. ALLEN의 부서명을 출력
    SELECT DNAME
    FROM EMP e, DEPT d
    WHERE e.DEPTNO = d.DEPTNO
    AND ENAME ='ALLEN';

 
-- 13. 이름에 J가 들어가는 사원들 중, 급여가 가장 높은 사원의 // 사원번호, 이름, 부서명, 급여, 부서위치를 출력
-- AND 절 위치
   SELECT dname, LOC, EMPNO, ENAME, SAL
   FROM EMP e, DEPT d
    WHERE e.DEPTNO = d.DEPTNO
    AND SAL = ( SELECT MAX(SAL) FROM EMP WHERE ENAME LIKE '%J%');
    
-- 14. 두번째로 많은 급여를 받는 사원의 이름과 부서명,급여를 출력
-- 두번째로 많은 급여? -> 급여가 MAX보다 작은 값들 중 MAX!
    SELECT dname,ENAME, SAL
    FROM EMP e, DEPT d
    WHERE e.DEPTNO = d.DEPTNO
    AND SAL = ( SELECT MAX(SAL) FROM EMP WHERE SAL < (SELECT MAX(SAL) FROM EMP));

-- 15. 입사일이 2번째로 빠른 사원의 부서명과 이름, 입사일을 출력
    SELECT dname,ENAME, HIREDATE
    FROM EMP e, DEPT d
    WHERE e.DEPTNO = d.DEPTNO
    AND HIREDATE = ( SELECT MIN(HIREDATE) FROM EMP WHERE HIREDATE > ( SELECT  MIN(HIREDATE) FROM EMP));

-- 16. DALLAS에 위치한 부서의 사원 중 최대 급여를 받는 사원의 급여에서 최소 급여를 받는 사원의 급여를 뺀 결과를 출력
    SELECT ENAME,SAL,DNAME 
    FROM EMP E,DEPT D 
    WHERE E.DEPTNO = D.DEPTNO
    AND SAL = (SELECT MIN(SAL) FROM EMP WHERE COMM IS NOT NULL
    AND ENAME LIKE '%N%') AND ENAME LIKE '%N%';

'📓 TechNote > SQL' 카테고리의 다른 글

[SQL] 트랜잭션이란?  (0) 2023.03.01
[SQL 중급쿼리] 연습 문제 풀이 1  (0) 2022.12.21
[SQL 기본쿼리] 연습 문제 풀이 3  (0) 2022.12.06
[SQL 기본쿼리] 연습 문제 풀이 2  (0) 2022.12.06
[SQL 기본쿼리] 연습 문제 풀이 1  (0) 2022.12.06
    '📓 TechNote/SQL' 카테고리의 다른 글
    • [SQL] 트랜잭션이란?
    • [SQL 중급쿼리] 연습 문제 풀이 1
    • [SQL 기본쿼리] 연습 문제 풀이 3
    • [SQL 기본쿼리] 연습 문제 풀이 2
    버터감자
    버터감자
    🌱 새싹 개발자의 코딩 블로그 🌱

    티스토리툴바