-
SQL 연습 문제back-end&DB/SQL(Oracle) 2023. 5. 18. 10:26728x90
문제1. 연봉이 120,000 이상되는 사원들의 이름 및 연봉을 출력하시오
SELECT first_name, salary * 12 FROM employees WHERE salary * 12 >= 120000;
문제2. 사원번호가 176 인 사원의 이름과 부서 번호를 출력하시오
SELECT first_name, department_id FROM employees WHERE employee_id = '176';
문제3. 연봉이 150,000 에서 200,000의 범위 이외인 사원들의 이름 및 연봉을 출력하시오. 단 연봉은 AnnSal로 출력하시오
SELECT first_name, salary * 12 AS annsal FROM employees WHERE salary * 12 >= 150000 AND salary * 12 <= 200000;
문제4. 2003/01/01 일부터 2005/05/30일 사이에 고용된 사원들의 이름, 사번, 고용일자를 출력하시오. 고용일자를 역순으로 정렬하시오
SELECT first_name, employee_id, hire_date FROM employees WHERE hire_date BETWEEN '2003/01/01' AND '2005/05/30';
문제5. 20번 및 50 번 부서에서 근무하는 모든 사원들의 이름 및 부서 번호를 알파벳순으로 출력하시오
SELECT first_name, department_id FROM employees WHERE department_id IN ( 20, 50 ) ORDER BY first_name ASC;
문제6. 20 번 및 50 번 부서에 근무하며, 연봉이 200,000 ~ 250,000 사이인 사원들의 이름 및 연봉을 출력하시오
SELECT first_name, salary * 12 FROM employees WHERE ( department_id = 20 OR department_id = 50 ) AND salary * 12 >= 200000 AND salary * 12 < 250000;
문제7. 2006년도에 고용된 모든 사람들의 이름 및 고용일을 조회한다
SELECT first_name, hire_date FROM employees WHERE hire_date BETWEEN '2006/01/01' AND '2006/12/31';
문제8. 매니저가 없는 사람들의 이름 및 업무를 출력하시오
SELECT first_name, job_id FROM employees WHERE manager_id IS NULL;
문제9. 매니저가 있는 사람들의 이름 및 업무, 매니저번호를 조회한다
SELECT first_name, job_id, manager_id FROM employees WHERE manager_id IS NOT NULL;
문제10. 커미션을 받는 모든 사원들의 이름, 연봉 및 커미션을 출력하시오.
연봉을 역순으로 정렬하고, 연봉은 ANNSAL로 출력하시오SELECT first_name, salary * 12 AS annsal FROM employees WHERE commission_pct IS NOT NULL ORDER BY salary * 12 DESC;
문제11. 이름의 네번째 글자가 a인 사원의 이름을 조회하시오
SELECT first_name FROM employees WHERE first_name LIKE '___a%';
문제12. 이름에 a 및 e 글자가 있는 사원의 이름을 조회하시오
SELECT first_name FROM employees WHERE first_name LIKE '%a%' OR first_name LIKE '%e%';
문제 13. 급여가 2,500, 3,500, 7,000이 아니며 직업이 SA_REP나 ST_CLERK인 사원의 이름과, 급여, 직업을 출력하시오
SELECT first_name, salary, job_id FROM employees WHERE salary NOT IN ( 2500, 3500, 7000 ) AND job_id IN ( 'SA_REP', 'ST_CLERK' );
문제 14. 30번 부서내의 모든 직업들을 유일한 값으로 출력하시오
90번 부서 또한 포함하고, 직업을 오름차순으로 출력하시오
SELECT DISTINCT job_id FROM employees WHERE department_id IN ( 30, 90 ) ORDER BY job_id ASC;
문제 15. 회사 전체의 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력하시오
SELECT MIN(salary), MAX(salary), SUM(salary), round( AVG(salary) ) FROM employees;
문제 16. 동일한 직업을 가진 사원들의 총 수를 출력하시오
SELECT job_id, COUNT(*) FROM employees GROUP BY job_id;
문제 17. 각 직업별, 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를
출력하시오. 단 최대 급여는 MAX, 최소 급여는 MIN, 급여 총 합은
SUM 및 평균 급여는 AVG로 출력하고, 직업을 오름차순으로 정렬하시오SELECT job_id, MIN(salary) AS min, MAX(salary) AS max, SUM(salary) AS sum, round( AVG(salary) ) AS avg FROM employees GROUP BY job_id ORDER BY 1;
문제 18. 매니저로 근무하는 사원들의 총 수를 출력하시오
SELECT COUNT(DISTINCT manager_id) FROM employees;
문제 19. 사내의 최대 급여 및 최소 급여의 차이를 출력하시오
SELECT MAX(salary) - MIN(salary) FROM employees;
문제20. 모든 사원들의 이름, 부서 이름 및 부서 번호를 출력하시오.
SELECT first_name , department_name, e.department_id FROM employees e FULL OUTER JOIN departments d ON ( e.department_id = d.department_id ) WHERE first_name IS NOT NULL ORDER BY 3;
문제 21. 매니저의 사번 및 그 매니저 밑 사원들 중 최소 급여를 받는 사원의 급여를 출력하시오
매니저가 없는 사람들은 제외한다.
최소 급여가 5000 미만인 경우는 제외한다.
급여 기준 역순으로 조회한다.SELECT salary FROM employees WHERE manager_id IS NOT NULL AND salary >= 5000 ORDER BY 1 DESC;
문제 22. 커미션을 받는 모든 사람들의 이름, 부서 명, 지역 ID 및 도시 명을 출력하시오
SELECT first_name, department_name, location_id FROM employees e FULL OUTER JOIN departments d ON commission_pct IS NOT NULL;
문제 23. 자신의 매니저보다 먼저 고용된 사원들의 이름 및 고용일을 출력하시오
SELECT e.last_name, e.employee_id, e.hire_date FROM employees e, employees m WHERE e.manager_id = m.employee_id AND e.hire_date < m.hire_date ORDER BY e.last_name;
문제 24. 부서명, 부서위치ID, 각 부서 별 사원 총 수, 각 부서 별 평균 급여를 출력하되, 부서위치를 오름차순으로 출력하시오
SELECT d.department_name, d.location_id, COUNT(e.employee_id), round( AVG(e.salary) ) FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY d.department_name, d.location_id ORDER BY d.location_id;
문제 25. Zlotkey 와 동일한 부서에 근무하는 다른 모든 사원들의 사번 및 고용날짜를 출력하시오
SELECT employee_id, hire_date FROM employees WHERE department_id IN ( SELECT department_id FROM employees WHERE last_name = 'Zlotkey' ) AND last_name <> 'Zlotkey' ORDER BY employee_id ASC;
문제 26. 회사 전체 평균 급여보다 더 급여를 많이 받는 사원들의 사번 및 이름을 출력하시오
SELECT first_name, salary FROM employees WHERE salary > ( SELECT AVG(salary) FROM employees ) ORDER BY salary;
문제 27. 이름에 u 가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 이름을 출력하시오
SELECT employee_id, first_name FROM employees WHERE department_id IN ( SELECT department_id FROM employees WHERE FIRST_name LIKE '%u%' );
문제28. 시애틀에 근무하는 사람 중 커미션을 받지않는 모든 사람들의 이름, 부서 명, 지역 ID를 출력하시오
SELECT e.last_name, d.department_name, d.location_id FROM employees e, departments d WHERE e.department_id = d.department_id AND d.location_id = ( SELECT location_id FROM locations WHERE city = 'Seattle' ) AND e.commission_pct IS NULL;
문제29. 이름이 DAVIES 인 사람보다 후에 고용된 사원들의 이름 및 고용일자를 출력하시오. 고용일자를 역순으로 출력하시오
SELECT last_name, hire_date FROM employees WHERE hire_date > ( SELECT hire_date FROM employees WHERE last_name = 'Davies' ) ORDER BY hire_date DESC;
문제30. King 을 매니저로 두고 있는 모든 사원들의 이름 및 급여를 출력하시오
SELECT last_name, salary, manager_id FROM employees WHERE manager_id IN ( SELECT employee_id FROM employees WHERE last_name = 'King' );
문제31. 회사 전체 평균급여보다 더 많이 받는 사원들 중 이름에 u가 있는 사원들이 근무하는 부서에서 근무하는 사원들의 사번, 이름 및 급여를 출력하시오
SELECT employee_id, last_name, salary FROM employees WHERE department_id IN ( SELECT department_id FROM employees WHERE last_name LIKE '%u%' AND salary > ( SELECT AVG(salary) FROM employees ) );
728x90'back-end&DB > SQL(Oracle)' 카테고리의 다른 글
SQL TCL, DCL과 객체 (0) 2023.05.16 SQL DML와 서브쿼리 (0) 2023.05.15 SQL CREATE와 ALTER 그리고 제약 조건 (0) 2023.05.10 SQL JOIN (0) 2023.05.09 SQL GROUP BY와 HAVING와 ORDER BY (0) 2023.05.08