Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • Javascript
  • java
  • 콜라보레이토리
  • Database
  • 서버등록
  • HTML
  • 오류해결
  • 파이썬온라인
  • 코딩앙마
  • SQL
  • oracle
  • sql기간
  • CSS
  • 창초기화
  • 백준
  • googlecolaboratory
  • 이것이자바다
  • 비쥬얼스튜디오코드
  • 노마드코더
  • 독학후기
  • SQLD합격후기
  • 연습문제
  • colaboratory
  • spring
  • AllArgsConstructor
  • SQLD합격
  • 시작일종료일
  • 기간설정
  • Eclipse
  • 기간쿼리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[SQL 기본쿼리] 연습문제 2
🤯TIL/Oracle SQL

[SQL 기본쿼리] 연습문제 2

2022. 11. 23. 23:53
728x90

📢 테이블 준비

https://dorothy-yang.tistory.com/191

 

[SQL 기본쿼리] 연습문제 테이블 생성 준비

CREATE TABLE DEPT (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14) , LOC VARCHAR2(13) ) ; CREATE TABLE EMP (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2

dorothy-yang.tistory.com

 


🕵️‍♂️ 문제 풀이 및 해답

-- 1. ALLEN 과 부서가 같은 사원들의 사원명, 입사일을 출력(급여 내림차순 정렬)
    SELECT ENAME, HIREDATE FROM EMP 
    WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'ALLEN')
    ORDER BY SAL DESC;

-- 2. 가장 높은 급여를 받는 사원보다 입사일이 늦은 사원의 이름, 입사일을 출력
    SELECT ENAME, HIREDATE FROM EMP
    WHERE HIREDATE > (SELECT HIREDATE FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP));
                                    
-- 3. 이름에 'T' 자가 들어가는 사원들의 급여의 합을 구하세요. (LIKE 사용)
-- LIKE '%T%'
    SELECT SUM(SAL) FROM EMP WHERE ENAME LIKE '%T%';
    
-- 4. 모든 사원의 평균급여를 구하세요. 소수 둘째자리 반올림표현
-- ROUND(수, 소수 몇째자리)
    SELECT ROUND(AVG(SAL), 2) FROM EMP; 

-- 5. 각 부서별 평균 급여를 구하세요. 소수 둘째자리 반올림표현 (GROUP BY)
-- AS는 생략가능, ROUND(AVG(SAL), 2)가 제목에 들어가는 것을 막기 위해 '부서평균급여' 넣어주기
    SELECT DEPTNO, ROUND(AVG(SAL), 2) 부서평균급여 FROM EMP GROUP BY DEPTNO;
    
-- 6. 각 부서별 평균급여, 전체급여, 최고급여, 최저급여를 구하여 평균급여가 높은 순으로 출력. 
--    평균은 소수 둘째자리 반올림표현
    SELECT DEPTNO, ROUND(AVG(SAL), 2) 평균급여, SUM(SAL) 전체급여, MAX(SAL)최고급여, MIN(SAL) 최저급여 
    FROM EMP 
    GROUP BY DEPTNO
    ORDER BY ROUND(AVG(SAL), 2) DESC;
-- 카페 답안
SELECT ROUND(AVG(SAL), 2), SUM(SAL), MAX(SAL), MIN(SAL)
FROM EMP
GROUP BY DEPTNO
ORDER BY AVG(SAL) DESC;

 

SQL안에서도 반복을 피하는 것이 좋아서?

데이터가 많을 경우에도 생략 가능...?ㅜ

-- 7. 20번 부서의 최고 급여보다 많은 사원의 사원번호, 사원명, 급여를 출력
    SELECT EMPNO, ENAME, SAL     FROM EMP 
    WHERE SAL > (SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 20);

-- 8. SMITH 와 같은 부서에 속한 사원들의 평균급여보다 큰  급여를 받는 모든 사원의 사원명, 급여를 출력
    SELECT ENAME, SAL FROM EMP 
    WHERE SAL > (SELECT AVG(SAL) FROM EMP 
    WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'SMITH'));
        
-- 9. 회사내의 최소급여와 최대급여의 차이를 구하세요.       
    SELECT MAX(SAL)- MIN(SAL) FROM EMP;
    
-- 10. SCOTT 의 급여에서 1000 을 뺀 급여보다 적게 받는 사원의 이름, 급여를 출력.
-- 오류인가? 테이블엔 SCOTT이 없다!
    SELECT ENAME, SAL FROM EMP 
    WHERE SAL < (SELECT SAL-1000 FROM EMP WHERE ENAME = 'SCOTT');

-- 11. JOB이 MANAGER인 사원들 중 최소급여를 받는 사원보다 급여가 적은 사원이름, 급여를 출력
    SELECT ENAME, SAL FROM EMP 
    WHERE SAL < (SELECT MIN(SAL) FROM EMP WHERE JOB = 'MANAGER');
            
-- 12. 이름이 S로 시작하고 마지막글자가 H인 사원의 이름을 출력
    SELECT ENAME FROM EMP WHERE ENAME LIKE 'S%H';

-- 13. WARD 가 소속된 부서 사원들의 평균 급여보다, 급여가 높은 사원의 이름,급여를 출력.
    SELECT ENAME, SAL FROM EMP 
    WHERE SAL > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO 
                = (SELECT DEPTNO FROM EMP WHERE ENAME = 'WARD'));

-- 14-1. EMP테이블의 모든 사원수를 출력
    SELECT COUNT(*) FROM EMP;
    
-- 14-2. 부서별 사원수를 출력
    SELECT DEPTNO, COUNT(*) FROM EMP GROUP BY DEPTNO;

-- 15. 업무별(JOB) 사원수를 출력
    SELECT JOB, COUNT(*) FROM EMP GROUP BY JOB;

-- 16. 최소급여를 받는 사원과 같은 부서의 모든 사원명을 출력
    SELECT ENAME FROM EMP 
    WHERE DEPTNO = (SELECT DEPTNO FROM EMP 
                        WHERE SAL = (SELECT MIN(SAL) FROM EMP));

 


💻 후기

쿼리문 반복은 피해야 하나?

728x90
저작자표시 (새창열림)

'🤯TIL > Oracle SQL' 카테고리의 다른 글

[SQL 기본쿼리] 연습문제 4  (0) 2022.11.29
[SQL 기본쿼리] 연습문제 3  (0) 2022.11.23
[SQL 기본쿼리] 연습문제 1  (0) 2022.11.23
[SQL 기본쿼리] 연습문제 테이블 생성 준비  (0) 2022.11.23
[연습문제] 테이블 구조 생성하기  (0) 2022.10.18
    '🤯TIL/Oracle SQL' 카테고리의 다른 글
    • [SQL 기본쿼리] 연습문제 4
    • [SQL 기본쿼리] 연습문제 3
    • [SQL 기본쿼리] 연습문제 1
    • [SQL 기본쿼리] 연습문제 테이블 생성 준비
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바