일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Kotlin
- 스프링부트
- stylesheet
- 구글맵스
- JS
- Java
- 랜덤넘버
- array
- button
- 랜덤번호
- TextView
- JavaScript
- Hook
- Javscript
- TypeScript
- RecyclerView
- scrollview
- nodejs
- 리액트
- fragment
- GoogleMaps
- Linux
- 오버라이딩
- 안드로이드
- Android
- 코틀린
- npm
- SpringBoot
- 자바스크립트
- React
- Today
- Total
타닥타닥 개발자의 일상
오라클 / JOIN 과 SUBQUERY를 이용한 원하는 정보 출력 연습문제 (1~11) 본문
오라클 / JOIN 과 SUBQUERY를 이용한 원하는 정보 출력 연습문제 (1~11)
NomadHaven 2021. 12. 24. 22:21
문제1) EMPLOYEES 테이블에서 (Kochhar의 급여)보다 많은 사원의 정보를 사원번호,이름,담당업무,급여를 출력하라.
SELECT employee_id, first_name, job_id, salary
FROM employees
WHERE salary > (SELECT salary
FROM employees
WHERE last_name = 'Kochhar');
문제2) EMPLOYEES 테이블에서 (급여의 평균)보다 적은 사원의 정보를 사원번호,이름,담당업무,급여,부서번호를 출력하여라.
SELECT employee_id, first_name, job_id, salary, department_id
FROM employees
WHERE salary < (SELECT ROUND(AVG(salary))
FROM employees);
문제3) EMPLOYEES 테이블에서 (100번 부서의 최소 급여)보다 최소 급여가 많은 다른 모든 부서를 출력하라
SELECT department_id, MIN(salary)
FROM employees
GROUP BY department_id
HAVING MIN(salary) > ( SELECT MIN(salary)
FROM employees
WHERE department_id = 100);
문제4) (업무별로 최소 급여)를 받는 사원의 정보를 사원번호,이름,업무,부서번호를 출력하여라.
단 업무별로 정렬하여라.
SELECT employee_id, first_name, job_id, salary, department_id
FROM employees
WHERE (job_id, salary) IN ( SELECT job_id, MIN(salary)
FROM employees
GROUP BY job_id);
문제5) EMPLOYEES 과 DEPARTMENTS 테이블에서 업무가 SA_MAN 사원의 정보를 이름,업무,부서명,근무지를 출력하라. FROM, WHERE절 둘 다 작성
SELECT first_name, job_id, d.department_name, l.city
FROM (SELECT *
FROM employees
WHERE job_id = 'SA_MAN') e, departments d, locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id;
SELECT first_name, job_id, d.department_name, l.city
FROM employees e, departments d, locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id
AND e.job_id = 'SA_MAN';
문제6) EMPLOYEES 테이블에서 (가장 많은 사원)을 갖는 MANAGER의 사원번호를 출력하라.
SELECT manager_id, COUNT(*)
FROM employees
GROUP BY manager_id
HAVING COUNT(manager_id) = (SELECT MAX(COUNT(*))
FROM employees
GROUP BY manager_id);
문제7) EMPLOYEES 테이블에서 (가장 많은 사원)이 속해 있는 부서 번호와 사원수를 출력하라.
SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id
HAVING COUNT(department_id) = ( SELECT MAX(COUNT(*))
FROM employees
GROUP BY department_id);
문제8) EMPLOYEES 테이블에서 (사원번호가 123인 사원의 직업)과 같고
(사원번호가 192인 사원의 급여(SAL))보다 많은 사원의 사원번호,이름,직업,급여를 출력하라.
SELECT employee_id, first_name, job_id, salary
FROM employees
WHERE
job_id = (SELECT job_id FROM employees WHERE employee_id = 123)
AND
salary > (SELECT salary FROM employees WHERE employee_id = 192);
문제9)직업(JOB)별로 최소급여를 받는 사원의 정보를 사원번호,이름,업무,부서명을 출력하라.
조건1 :직업별로 내림차순정렬
SELECT job_id, e.first_name, department_name, e.salary
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND (job_id, salary) IN(SELECT job_id, MIN(salary)
FROM employees
GROUP BY job_id)
ORDER BY e.job_id DESC;
문제10) EMPLOYEES 테이블에서 (50번 부서의 최소 급여)를 받는 사원보다 많은 급여를 받는
사원의 정보를 사원번호,이름,업무,입사일자,급여,부서번호를 출력하라.
단 50번은 제외
SELECT employee_id, first_name, job_id, hire_date, salary, department_id
FROM employees
WHERE salary > ( SELECT MIN(salary)
FROM employees
WHERE department_id = 50)
AND department_id <> 50;
문제11) EMPLOYEES 테이블에서 50번 부서의 최고 급여를 받는 사원 보다 많은 급여를 받는 사원의 정보를 사원번호,이름,업무,입사일자,급여,부서번호를 출력하라.
단50번은 제외
SELECT employee_id, first_name, job_id, hire_date, salary, department_id
FROM employees
WHERE salary > ( SELECT MAX(salary)
FROM employees
WHERE department_id = 50)