데이터베이스-오라클 복습(2). 22.11.24.

류소리·2022년 11월 24일
0

오라클

목록 보기
11/13

----- 11 / 23 ----------------------------------------------------------------------------

-- (1) emp 에서 전체열을 조회하세요
SELECT *
FROM EMP;

-- (2) 사원의 이름,연봉을 출력하기 (comm제외)
SELECT ENAME,SAL*12 AS ANNSAL
FROM EMP;

-- (3) 연봉을 내림 차순으로 정렬하시오.
SELECT ENAME, SAL*12 AS ANNSAL
FROM EMP
ORDER BY ANNSAL DESC;

-- (4) 사원이름,부서번호 내림,연봉 오름으로 정렬하기
SELECT ENAME, SAL*12 AS ANNSAL
FROM EMP
ORDER BY DEPTNO DESC, ANNSAL ASC;

-- (5) 직책이름을 출력해 봅시다. 중복제외
SELECT DISTINCT JOB
FROM EMP;

-- (6) 부서번호가 30인 사원 정보 모두
SELECT*
FROM EMP
WHERE DEPTNO = 30;

-- (7) 6번 이어서 직책이 CLERK인 사원 정보
SELECT *
FROM EMP
WHERE DEPTNO = 30
AND JOB = 'CLERK';

-- (8) SAL가 3000이상이고 직책은 ANALYST인 사원정보
SELECT *
FROM EMP
WHERE SAL >= 3000
AND JOB = 'ANALYST';

-- (9) 부서번호가 30이 아닌 사원 정보 모두
SELECT *
FROM EMP
WHERE DEPTNO<>30;

-- (10)JOB,CLERK,ANALYST,MANAGER인 사원
SELECT *
FROM EMP
WHERE JOB IN ('CLERK', 'ANALYST', 'MANAGER');

--(11)JOB,CLERK,ANALYST,MANAGER 아닌 사원
SELECT *
FROM EMP
WHERE JOB NOT IN ('CLERK', 'ANALYST', 'MANAGER');

-- (12) 급여가 2000-3000인 사원
SELECT *
FROM EMP
WHERE SAL BETWEEN 2000 AND 3000;

-- (13) ENAME 두번째 글자가 L인 사원
SELECT *
FROM EMP
WHERE ENAME LIKE '_L%';

-- (14) ENAME,SAL,COMM을 출력해 주세요.

-- (14) ENAME,SAL,COMM을 출력해 주세요.(COMM이 없는 사람들만 출력해주세요)
SELECT ENAME, SAL, COMM
FROM EMP
WHERE COMM IS NULL;

-- (14) ENAME,SAL,COMM을 출력해 주세요.(COMM이 있는 사람들만 출력해주세요)
SELECT ENAME, SAL, COMM
FROM EMP
WHERE COMM IS NOT NULL;

-- (15) 이름이 대소문자 구별없이 SCOTT인 사원
SELECT *
FROM EMP
WHERE LOWER(ENAME) = 'scott';

-- (16) 33은 얼마인가?
SELECT 3
3
FROM DUAL;

-- (17)오늘 날짜와 시간은?
SELECT SYSDATE
FROM DUAL;

-- (18) 부서별 SAL의 합계는?
SELECT DEPTNO, SUM(SAL)
FROM EMP
GROUP BY DEPTNO;

-- (19) 부서번호 30번인 인원 수?
SELECT COUNT(ENAME)
FROM EMP
WHERE DEPTNO = 30;

-- (20) 부서번호 30번인 ENAME, SAL는?

-- (21) 부서번호 30번인 최고급여인 사람의 ENAME, SAL는?
SELECT *
FROM EMP
WHERE SAL = (SELECT MAX(SAL) FROM EMP WHERE DEPTNO =30);

-- (22) 평균월급이 2000 이상인 사람들 이름과 평균월급,부서를 . 부서별로 출력,
select ename, avg(sal), deptno
from emp where sal >= 2000
group by deptno, ename
order by deptno;

-- (22) 평균월급이 2000 이상인 사람들 이름과 평균월급,부서를 . 부서별로 출력,
-- 부서별 평균월급은 2500이상인 부서
SELECT ENAME, AVG(SAL), DEPTNO
FROM EMP
WHERE SAL >= 2000
GROUP BY DEPTNO, ENAME
HAVING AVG(SAL) >= 2500
ORDER BY DEPTNO;

------------------- 11 /24 목요일 -----------------------------------------------
-- (1) 오늘의 년 월은?
SELECT TO_CHAR(SYSDATE, 'YYYY/MM')
FROM DUAL;

-- (2) COMM이 없는 사원은?
SELECT ENAME
FROM EMP
WHERE COMM IS NULL;

--(3) COMM이 있는 사람의 연봉은? SAL12+COMM
SELECT ENAME, SAL
12+COMM AS ANN
FROM EMP
WHERE COMM IS NOT NULL;

-- (4) JOB별로 직원 수는?
SELECT JOB, COUNT(*) AS COUNT
FROM EMP
GROUP BY JOB;

-- (5) 부서번호가 30번인 사원들의 평균 급여는?
SELECT AVG(SAL)
FROM EMP
WHERE DEPTNO=30;

-- (6) 부서별 직책별 평균급여는?
SELECT DEPTNO, JOB, AVG(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
ORDER BY DEPTNO, JOB;

-- (7) 부서번호가 30번인 부서이름과 평균 급여는?
SELECT DNAME, AVG(SAL)
FROM EMP JOIN DEPT USING(DEPTNO)
WHERE DEPTNO=30
GROUP BY DNAME;

-- (8) 급여가 2000인 이상의 사람들의 부서별 평균 급여는? AVG(SAL)
SELECT DEPTNO, AVG(SAL)
FROM EMP
WHERE SAL >= 2000
GROUP BY DEPTNO;

-- (9) 급여가 2000 이상인 사람들의 부서별 평균급여가 3000이상인 평균급여?
SELECT ROUND(AVG(SAL), 2)
FROM EMP
WHERE SAL >= 2000
GROUP BY DEPTNO ------->
HAVING AVG(SAL) >= 3000; ------> HAVING

SELECT DEPTNO, AVG(SAL)
FROM EMP
WHERE SAL >= 2000
GROUP BY DEPTNO
HAVING AVG(SAL) >= 3000;

-- (10) SELF JOIN 사원이름과 직책과 메니저 이름을 출력하시오 (모르겠음!!!!!!!)
SELECT E1.ENAME, E1.JOB, E2.ENAME AS MGR
FROM EMP E1, EMP E2
WHERE E1.MGR = E2.EMPNO;

-- (11) 사원이름과 직책과 메니저 이름과 사원들 부서이름을 출력
select e1.ename, e1.job, e2.ename, d.dname
from emp e1, emp e2 join dept d using(deptno) --- JOIN USING
where e1.mgr = e2.empno;

-- 이거 아닌거 같아,,,.,.,.,.,
select e1.ename, e1.job, e2.ename, d.dname
from emp e1 join emp e2 using(deptno)
join dept d using(deptno);

-- (12) 급여가 2000 초과인 사원의 부서번호 부서이름 사원번호 사원이름 급여
select deptno,d.dname, e.empno,e.ename,e.sal
from emp e join dept d using(deptno)
where e.sal>2000;

-- (13) 급여가 2975 초과인 사원의 이름,급여
select ename, sal
from emp
where sal > 2975;

-- (14) 급여가 joines 의 급여보다 높은 사원의 이름 급여?
SELECT ENAME, SAL
FROM EMP
WHERE SAL > (SELECT SAL
FROM EMP
WHERE ENAME = 'JONES');

-- (15) 입사일이 scott의 입사일보다 빠른 사원의 이름은?
SELECT ENAME
FROM EMP
WHERE HIREDATE < (SELECT HIREDATE
FROM EMP
WHERE ENAME ='SCOTT');

-- (16) 입사일이 1981년 1월 1일 이후인 사원 이름?
select ename
from emp
where hiredate>= to_date('1981/01/01', 'yyyy/mm/dd');

-- (17) 근무부서가 10,30,50인 사원 이름?
select ename
from emp
where deptno in(10,30,50);

-- (18) 근무부서가 10,30,50인 사원 이름과 근무 부서 이름?
SELECT ENAME, DNAME
FROM EMP JOIN DEPT USING (DEPTNO) ----- join,using .
WHERE DEPTNO IN (10, 30, 50);

profile
새싹 빅테이터 개발자

0개의 댓글