728x90
📌 기본쿼리 3 문제
-- EMP : EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
-- DEPT : DEPTNO, DNAME 부서명, LOC 지역
-- 공통 : DEPTNO
-- 사용문법이 대부분 JOIN, SUB QUERY 문법위주 연습.
1. 업무(JOB)가 MANAGER인 사원의 이름, 부서명, 입사일을 출력
2. 사원명이 WARD인 사원의 급여, 부서번호, 부서위치, 커미션을 출력
E.DEPTNO 표시 : 어디에서 나온 DEPTNO인지 정확하게 명시해줘야 함!
3. 30번 부서에 속하는 사원의 이름, 부서번호, 부서위치를 출력
4-1. 급여가 1250을 초과, 3000이하인 사원의 이름, 급여, 부서명을 출력
AND 사용
4-2. 급여가 1250이상 3000 이하인 사원의이름, 급여(BETWEEN 사용)
5. 커미션이 0 인 사원의 이름, 부서위치, 커미션을 출력
6.커미션 계약을 하지않은 사원의 이름, 부서명을 출력
7. 입사일이 81/06/09보다 늦은 사원이 이름, 부서위치, 입사일 출력(입사일 오름차순)
8. 모든 사원의 급여마다 1000을 더한 급여액, 사원명, 급여, 부서명을 출력
9. FORD의 입사일, 부서명을 출력
10. 사원명이 ALLEN인 사원의 급여, 부서번호, 부서위치를 출력
11. ALLEN의 급여보다 높은 급여를 받는 사원의 사원명, 부서명, 부서위치, 급여를 출력
12.가장 높은/낮은 커미션을 구하세요.
13. 가장 높은 커미션을 받는 사원의 이름, 부서명을 구하세요.
14. JOB이 CLERK 인 사원들의 급여의 합을 구하세요
15. JOB 이 CLERK 인 사원들의 급여의 합보다 급여가 많은 사원이름, 부서명을 출력
16. JOB이 CLERK인 사원들의 급여와 같은 급여를 받는 사원의 이름,부서명,급여를 출력(급여가 높은순으로 출력)
🧐 버터감자 기본쿼리 문제풀이
-- EMP : EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
-- DEPT : DEPTNO, DNAME 부서명, LOC 지역
-- 공통 : DEPTNO
-- 사용문법이 대부분 JOIN, SUB QUERY 문법위주 연습.
-- 1. 업무(JOB)가 MANAGER인 사원의 이름, 부서명, 입사일을 출력
SELECT dname,ENAME, HIREDATE
FROM EMP E , DEPT D
WHERE e.deptno = d.deptno
AND JOB ='MANAGER';
-- 2. 사원명이 WARD인 사원의 급여, 부서번호, 부서위치, 커미션을 출력
-- E.DEPTNO 표시 : 어디에서 나온 DEPTNO인지 정확하게 명시해줘야 함!
SELECT SAL, E.DEPTNO, LOC, COMM
FROM EMP E, DEPT D
WHERE e.deptno = d.deptno
AND ENAME ='WARD';
-- 3. 30번 부서에 속하는 사원의 이름, 부서번호, 부서위치를 출력
SELECT ENAME, E.DEPTNO, loc
FROM EMP E, DEPT D
WHERE e.deptno = d.deptno
AND E.DEPTNO = 30;
-- 4-1. 급여가 1250을 초과, 3000이하인 사원의 이름, 급여, 부서명을 출력
-- AND 사용
SELECT ename,DNAME, SAL
FROM EMP E, DEPT D
WHERE e.deptno = d.deptno
AND SAL > 1250 AND SAL <= 3000;
-- 4-2. 급여가 1250이상 3000 이하인 사원의이름, 급여(BETWEEN 사용)
SELECT ename, DNAME, SAL
FROM EMP E, DEPT D
WHERE e.deptno = d.deptno
AND SAL BETWEEN 1250 AND 3000;
-- 5. 커미션이 0 인 사원의 이름, 부서위치, 커미션을 출력
SELECT ENAME, LOC, COMM
FROM EMP E, DEPT D
WHERE e.deptno = d.deptno
AND COMM = 0;
-- 6.커미션 계약을 하지않은 사원의 이름, 부서명을 출력
SELECT ENAME, DNAME
FROM EMP E, DEPT D
WHERE e.deptno = d.deptno
AND COMM IS NULL;
-- 7. 입사일이 81/06/09보다 늦은 사원이 이름, 부서위치, 입사일 출력(입사일 오름차순)
SELECT ENAME, LOC, HIREDATE
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND HIREDATE > '81/06/09'
ORDER BY HIREDATE ASC;
-- 8. 모든 사원의 급여마다 1000을 더한 급여액, 사원명, 급여, 부서명을 출력
SELECT SAL+1000, ENAME, DNAME, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
-- 9. FORD의 입사일, 부서명을 출력
SELECT HIREDATE , ENAME
FROM DEPT D , EMP E
WHERE E.DEPTNO = D.DEPTNO
AND ENAME = 'FORD';
-- 10. 사원명이 ALLEN인 사원의 급여, 부서번호, 부서위치를 출력
SELECT ENAME , SAL, loc, E.DEPTNO
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND ENAME = 'ALLEN';
-- 11. ALLEN의 급여보다 높은 급여를 받는 사원의 사원명, 부서명, 부서위치, 급여를 출력
SELECT ENAME,DNAME , loc, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND SAL > ( SELECT SAL FROM EMP WHERE ENAME ='ALLEN');
-- 12.가장 높은/낮은 커미션을 구하세요.
SELECT MAX(COMM),MIN(COMM)
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
-- 13. 가장 높은 커미션을 받는 사원의 이름, 부서명을 구하세요.
SELECT ENAME , DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND COMM = ( SELECT MAX(COMM) FROM EMP);
-- 14. JOB이 CLERK 인 사원들의 급여의 합을 구하세요
SELECT SUM(SAL)
FROM EMP
WHERE JOB = 'CLERK';
-- 15. JOB 이 CLERK 인 사원들의 급여의 합보다 급여가 많은 사원이름, 부서명을 출력
SELECT ENAME, DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND SAL > ( SELECT SUM(SAL) FROM EMP WHERE JOB ='CLERK');
-- 16. JOB이 CLERK인 사원들의 급여와 같은 급여를 받는 사원의 이름,부서명,급여를 출력(급여가 높은순으로 출력)
SELECT ENAME, DNAME, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND SAL IN ( SELECT SAL FROM EMP WHERE JOB = 'CLERK')
ORDER BY SAL DESC;
+ 잊지말자!
= 는 결과값이 하나일때 사용
IN 은 결과값이 두개이상일때 사용한다 !
'📓 TechNote > SQL' 카테고리의 다른 글
[SQL 중급쿼리] 연습 문제 풀이 1 (0) | 2022.12.21 |
---|---|
[SQL 기본쿼리] 연습 문제 풀이 4 (0) | 2022.12.06 |
[SQL 기본쿼리] 연습 문제 풀이 2 (0) | 2022.12.06 |
[SQL 기본쿼리] 연습 문제 풀이 1 (0) | 2022.12.06 |
[DB] SQL관련 온라인북 사이트 (0) | 2022.10.13 |