본문 바로가기

Oracle Database /SQL-문제풀이

[ORACLE] DB 정렬 문제

 ORDER BY == 정렬(SORT)

오름/내림


--오름차순


HR 사용자

SELECT FIRST_NAME, SALARY

FROM EMPLOYEES

ORDER BY SALARY; 


--내림차순 (월급 기준 내림차순이 편합니다.)

SELECT FIRST_NAME, SALARY

FROM EMPLOYEES

ORDER BY SALARY DESC; 


-- 부서 : IT_PROG 사람에 월급 정렬  

SELECT FIRST_NAME, JOB_ID, SALARY

FROM EMPLOYEES

WHERE JOB_ID = 'IT_PROG'

ORDER BY SALARY DESC;


--MANAGER_ID 중 NULL값인 사람을 첫번쨰로

SELECT EMPLOYEE_ID, FIRST_NAME, SALARY, MANAGER_ID

FROM EMPLOYEES

ORDER BY MANAGER_ID NULLS FIRST;


--NULL값 다음으로 SALARY 내림차순 정렬

SELECT EMPLOYEE_ID, FIRST_NAME, SALARY, MANAGER_ID

FROM EMPLOYEES

ORDER BY MANAGER_ID NULLS FIRST, SALARY DESC;


--연봉을 내림차순으로

SELECT FIRST_NAME, SALARY * 12 AS 연봉

FROM EMPLOYEES

ORDER BY 연봉 DESC;



--문제1) EMPLOYEES 테이블에서 입사일자 순으로 정렬하여 

--     사원번호, 이름, 업무, 급여,일사일자,부서번호출력하여라.

SELECT EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID, HIRE_DATE

FROM EMPLOYEES

ORDER BY HIRE_DATE;


--문제2) EMPLOYEES 테이블에서 가장 최근에 입사한 순으로 

--      사원번호, 이름, 업무, 급여, 일사일자, 부서번호를 출력하여라.

SELECT EMPLOYEE_ID, FIRST_NAME, JOB_ID, HIRE_DATE, DEPARTMENT_ID

FROM EMPLOYEES

ORDER BY HIRE_DATE DESC;


--문제3) EMPLOYEES 테이블에서 부서번호로 정렬한 후 부서번호가 같을 경우

--      급여가 많은 순으로 정렬하여 사원번호,성명,업무,부서번호,급여를 출력하여라.

SELECT EMPLOYEE_ID, FIRST_NAME, JOB_ID, DEPARTMENT_ID, SALARY

FROM EMPLOYEES

ORDER BY DEPARTMENT_ID , SALARY;



--문제4)EMPLOYEES 테이블에서 첫번쨰 정렬은 부서번호로 

--     두번쨰 정렬은 업무로 세번째 정렬은 급여가 많은 순으로 정렬하여

--     사원번호, 성명, 입사일자, 부서번호, 업무, 급여를 출력하여라.

SELECT EMPLOYEE_ID,FIRST_NAME,DEPARTMENT_ID,JOB_ID,SALARY

FROM EMPLOYEES

ORDER BY DEPARTMENT_ID,JOB_ID,SALARY;



SCOTT사용자

-- 19) emp 테이블에서 사원번호, 사원이름, 입사일을 출력하는데 

-- 입사일이 빠른 사람순으로 정렬하시오.

SELECT EMPNO, ENAME, HIREDATE

FROM EMP

ORDER BY HIREDATE;


-- 20) emp 테이블에서 사원이름, 급여, 연봉을 구하고 연봉이 많은 순으로 정렬하시오.

SELECT ENAME,SAL,SAL*12

FROM EMP

ORDER BY SAL*12;


--21)10번 부서와 20번부서에서 근무하고 있는 사원의 이름과 부서번호를 출력하는데 

-- 이름을 영문자순으로 표시하시오.

SELECT DEPTNO,ENAME

FROM EMP

WHERE DEPTNO = 10 OR DEPTNO = 20

ORDER BY ENAME;


--22) 커미션을 받는 모든 사원의 이름,급여 및 

-- 커미션을 커미션을 기준으로 내림차순으로 정렬하여 표시하십시오.

SELECT COMM, ENAME, SAL

FROM EMP

WHERE COMM IS NOT NULL

ORDER BY COMM DESC;