Oacle hr 샘플 데이터베이스 고전 조회 문

1. 임금 이 12000 이상 인 직원 의 이름과 임금 조회Select initcap(concat(last_name,first_name)) " ",salary from employees where salary>12000;
2. 직원 번호 176 인 직원 의 이름과 부서 번호 조회  select initcap(concat(last_name,first_name)) " ",department_id from employees where employee_id = 176;
3. 5000 명 에서 12000 명 이 아 닌 직원 의 이름과 월급 을 선택한다.  select initcap(concat(last_name,first_name)) " ", salary from employees where salary<5000 or salary>12000;
4. 고용 기간 이 1908 - 02 - 01 에서 1908 - 05 - 01 사이 인 직원 의 이름 을 선택한다. jobid 와 고용 시간
쓰기 1:  select initcap(concat(last_name,first_name)) " ",job_id,hire_date from employees where hire_date between '01-2 -08' and '01-5 -08';
쓰기 2:  select initcap(concat(last_name,first_name)) " ",job_id,hire_date from employees where hire_date between to_date('1908-02-01','YYYY-MM-DD') and to_date('1908-05-01','YYYY-MM-DD');
5. 20 번 또는 50 번 부서 에서 근무 하 는 직원 의 이름과 부서 번호 표기 법 1 번 을 선택한다.  Select initcap(concat(last_name,first_name)) " ",department_id from employees where department_id=20 or department_id=50;
쓰기 2:  select initcap(concat(last_name,first_name)) " ",department_id from employees where department_id in (20,50);
6. 1908 년 에 고 용 된 직원 의 이름과 고용 시간 표기 법 1 을 선택한다.  select initcap(concat(last_name,first_name))" ",hire_date from employees where hire_date like '%08';
쓰기 2:  select initcap(concat(last_name,first_name))" ",hire_date from employees where hire_date between to_date('1908-1-1','YYYY-MM-DD') and to_date('1908-12-31','YYYY-MM-DD'); (이것 은 문자열 을 날짜 로 변환 할 때 시스템 날짜 와 일치 하지 않 기 때문에 조회 한 항목 이 표시 되 지 않 을 수 있 습 니 다)
7. 회사 에 관리자 가 없 는 직원 의 이름과 job id 를 선택 하 는 방법 1.  Select initcap(concat(last_name,first_name)) " ",job_id from employees where manager_id is null;  방법 2:  select initcap(concat(last_name,first_name)) " ",job_id from employees where nvl(manager_id,0)=0;
8. 회사 에 상여금 이 있 는 직원 의 성명, 급여 와 상여금 등급 을 선택 하 는 방법 1.  Select initcap(concat(last_name,first_name)) " ",salary,commission_pct from employees where commission_pct is not null;
방법 2:  Select initcap(concat(last_name,first_name)) " ",salary,commission_pct from employees where nvl2(commission_pct, commission_pct,0)>0;
방법 3:  select initcap(concat(last_name,first_name)) " ", commission_pct from employees where nvl(commission_pct,0)<>0;
9. 직원 이름 을 선택 한 세 번 째 알파벳 은 a 의 직원 이름 select initcap(concat(last_name,first_name)) " " from employees where initcap(concat(last_name,first_name)) like '__a%';10. 이름 중 알파벳 a 와 e 가 있 는 직원 이름 선택  select initcap(concat(last_name,first_name)) " " from employees where initcap(concat(last_name,first_name)) like '%a%' and initcap(concat(last_name,first_name)) like '%e%';
11. 시스템 시간 표시 방법 1: Select sysdate from dual;방법 2: Select current_timestamp from dual;12. 직원 번호, 성명, 임금, 임금 20% 인상 결과 조회 (new salary)  Select employee_id,initcap(concat(last_name,first_name)) " ",salary*1.2 as"new salary" from employees;
13. 직원 의 이름 을 이니셜 로 정렬 하고 이름 의 길이 (length) 를 쓴다.  Select initcap(concat(last_name,first_name)) " ",length(initcap(concat(last_name,first_name))) as" " from employees order by substr(initcap(concat(last_name,first_name)),1,1);
14. 각 직원 의 이름 을 조회 하고 각 직원 이 회사 에서 일 하 는 월 수 를 나타 낸다.  Select initcap(concat(last_name,first_name)) " ",trunc(months_between(sysdate,hire_date),0) " " from employees;
15. 직원 의 성명 을 조회 하고 회사 에서 근무 하 는 월 수 (worked month) 를 조회 하 며 월 수 내림차 순 으로 배열 하 는 방법 1: Select initcap(concat(last_name,first_name)) " ",trunc(months_between(sysdate,hire_date),0) " " from employees order by trunc(months_between(sysdate,hire_date),0) desc; 방법 2:  select initcap(concat(last_name,first_name))" ",trunc(months_between(sysdate,hire_date),0)as worked_month from employees order by worked_month desc;  16. 조 회 를 통 해 다음 결 과 를 얻 을 수 있 습 니 다 earns monthly but wants Dream Salary King earns $24000 monthly but wants $72000 문법 은:  Select last_name||' earns '||to_char(salary,'$99999')||' monthly but wants '||to_char(salary*3,'$99999') as "Dream Salary" from employees;
17. decode 함 수 를 사용 하여 다음 조건 에 따라 job        grade AD_PRES    A ST_MAN    B IT_PROG    C SA_REP     D ST_CLERK    E Others    F 다음 결과 생 성: Last name    Job_id    Grade king    AD_PRES    A 문법: 쓰기 1:  select last_name,job_id,decode(job_id,'AD_PRES','A','ST_MAN','B','IT_PROG','C','SA_REP ','D','ST_CLERK','E','F')Grade from employees;  쓰기 2:  Select last_name,job_id, case job_id when 'AD_PRES' then 'A' when 'ST_MAN' then 'B' when 'IT_PROG' then 'C' when 'SA_REP' then 'D' when 'ST_CLERK' then 'E' else 'F' end "Grage" from employees;
18. 회사원 임금 의 최대 치, 최소 치, 평균치, 총계 조회  select max(salary) " ",min(salary) " ",avg(salary) " ",sum(salary) " " from employees;
19. 각 job id 의 직원 급여 의 최대 치, 최소 치, 평균치, 총계 조회  select job_id,max(salary) " ",min(salary) " ",avg(salary) " ",sum(salary) " " from employees group by job_id;
20. 각 job id 를 가 진 직원 수 선택  Select job_id,count(*) from employees group by job_id;
21. 직원 최고 임금 과 최저 임금 의 차 이 를 조회 (DIFFERENCE)  Select max(salary)-min(salary) as "DIFFERENCE" from employees;
22. 각 관리자 부하 직원 의 최저 임금 을 조회 하 는데 그 중에서 최저 임금 은 6000 보다 낮 으 면 안 되 고 관리자 가 없 는 직원 은 계산 하지 않 는 다 Select manager_id,min(salary) from employees group by manager_id having min(salary)>=6000 and manager_id is not null;.
23. 모든 부서 의 이름, location id, 직원 수 와 임금 평균 값 조회  Select department_name,location_id,count(e.job_id) as " ",avg(e.salary) as " " from departments d,employees e where d.department_id=e.department_id group by department_name,location_id;
1. 적어도 한 명의 직원 이 있 는 모든 부 서 를 열거 합 니 다.  select department_name from departments where department_id in(select department_id from employees);  혹은  select department_name from departments where department_id in(select department_id from employees group by department_id having count(department_id) >=1);
2. "Hall" 보다 월급 이 많은 모든 직원 select * from employees where salary > (select salary from employees where last_name = 'Hall'); 을 나열 합 니 다. (주의해 야 할 것 은 검색 어 는 대소 문 자 를 구분 하지 않 지만 안의 필드 는 대소 문 자 를 엄 격 히 구분 합 니 다)
3. 모든 직원 의 이름과 직접 상급자 의 성명 을 열거 합 니 다.  select a.first_name|| ' '||a.last_name " ",(select a.first_name|| ' '||a.last_name from employees b where b.employee_id=a.manager_id) as " " from employees a;
4. 직급 보다 먼저 고 용 된 모든 직원 을 나열 한다.  select a.first_name|| ' '||a.last_name " " from employees a where a.hire_date
5. 부서 이름과 이 부서 의 직원 정 보 를 열거 하고 직원 이 없 는 부서 select a.department_name,b.employee_id,b.first_name|| ' '||b.last_name " ",b.job_id,b.manager_id,b.hire_date,b.salary,b.department_id from departments a left join employees b on a.department_id=b.department_id; 를 열거한다.
6. 모든 "SH CLERK" (사무원) 의 이름과 부서 명 을 보 여 줍 니 다.  select a.first_name|| ' '||a.last_name " ",b.department_name from employees a join departments b on a.department_id=b.department_id and a.job_id='SH_CLERK';
7. 최저 임금 이 1500 이상 인 각종 업 무 를 나열 한다.  select distinct job_id as HighSalJob from employees group by job_id having min(salary)>1500;
8. 부서 "SALES" (판매 부) 에서 근무 하 는 직원 의 이름 을 열거 하고 판매 부의 부서 번 호 를 모른다 고 가정 합 니 다.  select first_name|| ' '||last_name " " from employees where department_id=(select department_id from departments where department_name='Sales');
9. 회사 평균 임금 보다 임금 이 높 은 모든 직원 을 나열 한다.  select first_name|| ' '||last_name " " from employees where salary>(select avg(salary) from employees);
10. "first name =" Jean "과 같은 일 을 하 는 모든 직원 목록  select first_name|| ' '||last_name " " from employees where job_id=(select job_id from employees where first_name='Jean');
11. 임금 이 부서 30 대 직원 의 임금 과 같은 모든 직원 의 이름과 임금 을 열거 합 니 다.  select a.first_name|| ' '||a.last_name " ",a.salary from employees a where a.salary in (select b.salary from employees b where b.department_id=30) and a.department_id<>30;
12. 부서 에서 30 일 하 는 모든 직원 의 임금 보다 임금 이 높 은 직원 의 이름과 임금 을 나열 한다.  select a.first_name|| ' '||a.last_name " ",a.salary from employees a where a.salary > (select max(b.salary)from employees b where b.department_id=30);
13. 각 부서 에서 일 하 는 직원 수, 평균 임금 과 평균 서비스 기한 을 열거한다  select (select b.department_name from departments b where a.department_id=b.department_id) as " " ,count(department_id) as " ",avg(salary) as " " from employees a group by department_id;
14. 모든 직원 의 성명, 부서 명칭 과 임금 을 열거한다  select a.first_name|| ' '||a.last_name " ",(select b.department_name from departments b where b.department_id=a.department_id) as " ",salary from employees a;
15. 모든 부서 의 상세 한 정보 와 부서 인원 을 나열 한다.  select a.department_id,a.department_name,a.location_id,(select count(department_id) from employees b where b.department_id=a.department_id group by b.department_id) as " " from departments a;
16. 각종 업무 의 최저 임금 을 나열 한다.  select job_id,min(salary) from employees group by job_id;
17. job id = "ST MAN" 의 최저 임금 목록  select department_id,min(salary) from employees where job_id='ST_MAN' group by department_id;
18. 모든 직원 의 연 임금 을 열거 하고 연봉 에 따라 낮은 것 에서 높 은 것 으로 순 위 를 매 긴 다.  select first_name|| ' '||last_name " ",(salary+nvl(commission_pct,0))*12 as " " from employees order by " " asc;  1. EMP 표 의 이름 (ENAME) 을 찾 아 세 번 째 알파벳 은 a 의 직원 이름 이다.  SELECT concat(first_name,last_name) " " FROM employees WHERE concat(first_name,last_name) like '__a%';
2. employees 표 직원 이름 에 a 와 n 이 들 어 있 는 직원 이름 찾기  SELECT concat(first_name,last_name) " " FROM employees WHERE concat(first_name,last_name) like '%a%' and concat(first_name,last_name) like '%n%';  혹은  SELECT concat(first_name,last_name) " " FROM employees WHERE concat(first_name,last_name) like '%a%n%' ;
3. 커미션 이 있 는 모든 직원 을 찾 아 이름, 월급, 커미션 을 열거 한 결과 월급 에 따라 작은 것 부터 큰 것 까지 커미션 이 큰 것 부터 작은 것 까지 나 타 났 다.  SELECT concat(first_name,last_name) " ",salary + commission_pct AS ,commission_pct FROM employees ORDER BY asc,commission_pct DESC; (이것 은 오류 가 있어 야 합 니 다. 같은 데이터 로 두 가지 정렬 방법 을 사용 할 수 없 기 때 문 입 니 다)
4. 부서 번호 가 20 인 모든 직위 열거  SELECT DISTINCT job_id FROM employees WHERE department_id = 20;
5. Sales 에 속 하지 않 는 부 서 를 나열 합 니 다.  SELECT DISTINCT * FROM departments WHERE department_name <> 'Sales';  혹은  SELECT DISTINCT * FROM departments WHERE department_name != 'Sales';  혹은  SELECT DISTINCT * FROM departments WHERE department_name not in('Sales');  혹은  SELECT DISTINCT * FROM departments WHERE department_name not like 'Sales';
6. 월급 이 1000 에서 1500 사이 에 있 지 않 은 직원 의 정 보 를 보 여 준다. 이름, 월급, 월급 에 따라 큰 것 부터 작은 것 까지 순 위 를 매 긴 다.  SELECT concat(first_name,last_name) " ",salary + salary*commission_pct AS Wage FROM employees WHERE salary + salary*commission_pct NOT BETWEEN 1000 AND 1500 ORDER BY Wage DESC;  혹은  SELECT concat(first_name,last_name) " ",salary + salary*commission_pct AS Wage FROM employees WHERE salary + salary*commission_pct<1000 or salary + salary*commission_pct>1500 ORDER BY Wage DESC;
7. 직위 가 SA MAN 과 SA REP 이 고 연봉 이 15000 과 20000 사이 인 직원 의 정보: 이름, 직위, 연봉 SELECT concat(first_name,last_name) " ",job_id ,(salary + salary*commission_pct) * 12 AS FROM employees WHERE (salary + salary*commission_pct) * 12 BETWEEN 150000 AND 400000 AND job_id IN('SA_MAN','SA_REP');8. 다음 두 SQL 문장의 출력 결 과 를 설명 한다. SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NULL; 화해시키다  SELECT employee_id,commission_pct FROM employees WHERE commission_pct=NULL;  간략하게 설명 하면 어떤 차이 가 있 습 니까?
9. 문장 SELECT concat (first name, last name) "직원 이름", salary FROM employees WHERE salary > "1500" 을 잘못 보 고 했 습 니까?
1. NLS LANG 의 값 을 변경 하여 SELECT TO CHAR (SALARY, 'L99, 999.99') FROM HR. EMPLOYEES WHERE ROWNUM < 5 출력 결과 의 화폐 단 위 는 총 65509 ℃ 와 $입 니 다.  SELECT TO_CHAR(SALARY,'L99,999.99') FROM EMPLOYEES WHERE ROWNUM < 5;  결 과 는 다음 과 같다.
TO_CHAR(SALARY,'L99,999.99')
24,000.0020,000.0020,000.009,000.00
SELECT TO_CHAR(SALARY,'$99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5;  표시 결 과 는 다음 과 같 습 니 다: TO CHAR (SALARY, '$99, 999.99')
$24,000.00  
$20,000.00  
$20,000.00  
$9,000.00

(설명: '$99, 999.99' 형식 문자: L: 현지 화폐 기 호 를 강제로 표시 합 니 다 $: 달러 기 호 를 표시 합 니 다 9: 숫자 0 을 표시 합 니 다 0: 강제 0 을 표시 합 니 다.: 소수점 을 표시 합 니 다. 천 자리 구분자 표시)
2. 앞의 다섯 명의 모든 직원 의 이름 을 열거 하고 월급, 임금 인상 후의 월급 (상승폭 은 8%) 을 '위안' 단위 로 반올림 한다. SELECT FIRST_NAME|| ' '||last_name " ",SALARY,ROUND(SALARY * 1.08) FROM EMPLOYEES WHERE ROWNUM <=5;3. 누가 최고 지도자 인지 찾아내 이름 을 대문자 로 표시 한다.  SELECT UPPER(FIRST_NAME || ' ' || LAST_NAME) AS NAME FROM HR.EMPLOYEES WHERE MANAGER_ID IS NULL;
4. 데 이 빗 의 직접 리더 의 이름 찾기  SELECT UPPER(FIRST_NAME ||' ' || LAST_NAME) AS NAME FROM EMPLOYEES WHERE EMPLOYEE_ID IN(SELECT MANAGER_ID FROM EMPLOYEES WHERE FIRST_NAME = 'David' AND LAST_NAME = 'Austin');  혹은  SELECT UPPER( EMP1.FIRST_NAME ||' ' || EMP1.LAST_NAME) AS NAME FROM EMPLOYEES EMP1,EMPLOYEES EMP2 WHERE EMP1.EMPLOYEE_ID = EMP2.MANAGER_ID AND EMP2.FIRST_NAME = 'David' AND EMP2.LAST_NAME = 'Austin';
5. First Name 은 Alexander 이 고, LAST NAME 는 Hunold 를 위해 누 구 를 이 끌 어 갑 니까? (누가 David 에 게 보고 합 니까?)  SELECT UPPER(FIRST_NAME ||' ' || LAST_NAME) AS NAME FROM EMPLOYEES WHERE MANAGER_ID IN(SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE FIRST_NAME = 'Alexander' AND LAST_NAME = 'Hunold');  혹은  SELECT UPPER( EMP1.FIRST_NAME || ' ' || EMP1.LAST_NAME) AS NAME FROM EMPLOYEES EMP1,EMPLOYEES EMP2 WHERE EMP1.MANAGER_ID = EMP2.EMPLOYEE_ID AND EMP2.FIRST_NAME = 'Alexander' AND EMP2.LAST_NAME = 'Hunold';
6. 어떤 직원 의 월급 이 직접 상사 의 월급 보다 높 고 직원 의 이름과 월급, 상사 의 이름과 월급 을 나열 합 니까?  SELECT E.FIRST_NAME,E.SALARY,M.FIRST_NAME,M.SALARY FROM EMPLOYEES E,EMPLOYEES M WHERE E.MANAGER_ID = M.EMPLOYEE_ID AND E.SALARY > M.SALARY;
직원 의 이름과 월급 만 열거 하면 이렇게 할 수 있다.  SELECT E.FIRST_NAME,E.SALARY FROM EMPLOYEES E WHERE E.SALARY >(SELECT M.SALARY FROM EMPLOYEES M WHERE E.MANAGER_ID = M.EMPLOYEE_ID);
7. 어떤 직원 과 Chen (LAST NAME) 이 같은 부서 에 있 습 니까?  SELECT FIRST_NAME||' '||last_name " " FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE LAST_NAME = 'Chen') AND LAST_NAME <> 'Chen';  혹은  SELECT E1.FIRST_NAME FROM EMPLOYEES E1,EMPLOYEES E2 WHERE E1.DEPARTMENT_ID = E2.DEPARTMENT_ID AND E2.LAST_NAME = 'Chen' AND E1.LAST_NAME <> 'Chen';
8. 어떤 직원 이 De Haan (LAST NAME) 과 같은 직위 를 하 는가  SELECT FIRST_NAME||' '||last_name " " FROM EMPLOYEES WHERE JOB_ID IN(SELECT JOB_ID FROM EMPLOYEES WHERE LAST_NAME = 'De Haan') AND LAST_NAME <> 'De Haan';
혹은  SELECT E1.FIRST_NAME FROM EMPLOYEES E1,EMPLOYEES E2 WHERE E1.JOB_ID = E2.JOB_ID AND E2.LAST_NAME = 'De Haan' AND E1.LAST_NAME <> 'De Haan';
9. 홀 (LAST NAME) 과 같은 부서 에 있 지 않 은 직원  SELECT FIRST_NAME || ' ' || LAST_NAME FROM HR.EMPLOYEES WHERE DEPARTMENT_ID NOT IN(SELECT DEPARTMENT_ID FROM HR.EMPLOYEES WHERE LAST_NAME = 'Hall');
또는:  SELECT e1.FIRST_NAME|| ' '||e1.last_name " " FROM EMPLOYEES e1,EMPLOYEES e2 WHERE e1.DEPARTMENT_ID = e2.DEPARTMENT_ID(+) and e2.LAST_NAME(+) = 'Hall' and e2.LAST_NAME IS NULL;
10. 어떤 직원 이 William (FIRST NAME), Smith (LAST NAME) 와 다른 직위 를 하 는가  SELECT FIRST_NAME || ' ' || LAST_NAME " " FROM HR.EMPLOYEES WHERE JOB_ID <> (SELECT DISTINCT JOB_ID FROM EMPLOYEES WHERE FIRST_NAME = 'William' AND LAST_NAME = 'Smith');
11. 공제금 이 있 는 직원 의 정보 표시: 이름, 공제금, 소재 부서 이름, 소재 지역 의 이름  SELECT E.FIRST_NAME || ' ' || E.LAST_NAME AS NAME, E.COMMISSION_PCT,D.DEPARTMENT_NAME,L.CITY FROM HR.EMPLOYEES E,HR.DEPARTMENTS D,HR.LOCATIONS L WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID AND D.LOCATION_ID = L.LOCATION_ID AND E.COMMISSION_PCT IS NOT NULL;
12. Executive 부서 에 어떤 직위 가 있 는 지 보 여 줍 니 다.  SELECT DISTINCT E.JOB_ID FROM HR.EMPLOYEES E,HR.DEPARTMENTS D WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID AND D.DEPARTMENT_NAME = 'Executive';
13. 회사 전체 에서 최고 임금 과 최저 임금 의 차이 가 얼마 입 니까?  SELECT MAX(SALARY) - MIN(SALARY) FROM HR.EMPLOYEES;
14. 공제금 이 0 이상 인 사람  SELECT COUNT(*) AS 0 FROM HR.EMPLOYEES WHERE COMMISSION_PCT > 0;
또는:  SELECT COUNT(COMMISSION_PCT) AS 0 FROM HR.EMPLOYEES WHERE COMMISSION_PCT > 0;
15. 전체 회사 의 최고 임금, 최저 임금, 임금 총화, 평균 임금 이 정수 로 유지 되 는 것 을 나타 낸다.  SELECT MAX(NVL(SALARY,0)) AS ,MIN(NVL(SALARY,0)) AS ,SUM(NVL(SALARY,0)) AS ,ROUND(AVG(NVL(SALARY,0))) AS FROM HR.EMPLOYEES;
16. 회사 전체 에 몇 명의 지도자 가 있 습 니까?  SELECT COUNT(DISTINCT(MANAGER_ID)) FROM EMPLOYEES WHERE MANAGER_ID IS NOT NULL;
17. 같은 부서 에 입사 하 는 날 이 늦 지만 다른 동료 보다 월급 이 많은 직원: 이름, 월급, 입사 날짜.  SELECT DISTINCT E1.FIRST_NAME || ' ' || E1.LAST_NAME AS ,E1.SALARY AS ,E1.HIRE_DATE AS FROM HR.EMPLOYEES E1,HR.EMPLOYEES E2 WHERE E1.DEPARTMENT_ID = E2.DEPARTMENT_ID AND E1.HIRE_DATE > E2.HIRE_DATE AND E1.SALARY > E2.SALARY ORDER BY DESC;
1. 각 부서 의 평균, 최대, 최소 임금, 인원 은 부서 번호 의 오름차 순 으로 배열 한다.  SELECT DEPARTMENT_ID AS ,AVG(SALARY) AS ,MAX(SALARY) AS ,MIN(SALARY) AS ,COUNT(*) AS FROM EMPLOYEES GROUP BY DEPARTMENT_ID ORDER BY DEPARTMENT_ID ASC;
2. 각 부서 에서 5000 명 이상 의 직원 수  SELECT DEPARTMENT_ID,COUNT(*) FROM EMPLOYEES WHERE SALARY > 5000 GROUP BY DEPARTMENT_ID;
3. 각 부서 의 평균 임금 과 인원 은 부서 이름 의 오름차 순 으로 배열 한다.  SELECT DEPT.DEPARTMENT_NAME,AVG(EMP.SALARY),COUNT(*) FROM EMPLOYEES EMP,DEPARTMENTS DEPT WHERE EMP.DEPARTMENT_ID = DEPT.DEPARTMENT_ID GROUP BY DEPT.DEPARTMENT_NAME ORDER BY DEPT.DEPARTMENT_NAME;
또는:  SELECT DPTNAME,AVG(SALARY),COUNT(*) FROM(SELECT(SELECT DEPT.DEPARTMENT_NAME FROM DEPARTMENTS DEPT WHERE DEPT.DEPARTMENT_ID = EMP.DEPARTMENT_ID) DPTNAME, EMP.SALARY FROM EMPLOYEES EMP) GROUP BY DPTNAME ORDER BY DPTNAME;
4. 각 부서 에서 똑 같은 월급 을 받 는 직원 의 통계 정 보 를 열거 하고 그들의 부서 번호, 월급, 인원 을 나열 한다.  SELECT EMP1.DEPARTMENT_ID,EMP1.SALARY,COUNT(*) CNT FROM EMPLOYEES EMP1,EMPLOYEES EMP2 WHERE EMP1.DEPARTMENT_ID = EMP2.DEPARTMENT_ID AND EMP1.SALARY = EMP2.SALARY AND EMP1.EMPLOYEE_ID <> EMP2.EMPLOYEE_ID GROUP BY EMP1.DEPARTMENT_ID,EMP1.SALARY;
5. 같은 부서 에서 1000 명 이상 의 임금 을 받 는 직원 수가 2 명 이 넘 는 부 서 를 열거 하고 부서 이름, 지역 이름 을 표시 합 니 다.  SELECT D.DEPARTMENT_NAME,L.CITY,COUNT(*) FROM EMPLOYEES E,DEPARTMENTS D,LOCATIONS L WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID AND D.LOCATION_ID = L.LOCATION_ID AND E.SALARY > 1000 GROUP BY D.DEPARTMENT_NAME,L.CITY HAVING COUNT(*) > 2;
6. 어떤 직원 의 임금 이 전체 회사 의 평균 임금 보다 높 고 직원 의 이름과 임금 (인하) 을 나열 합 니까?  SELECT FIRST_NAME || ' ' || LAST_NAME,SALARY FROM EMPLOYEES WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEES) ORDER BY SALARY DESC;
7. 어떤 직원 의 임금 이 50 호 와 80 호 부서 의 평균 임금 사이 에 있 습 니까?  SELECT FIRST_NAME || ' ' || LAST_NAME AS NAME,SALARY FROM EMPLOYEES WHERE SALARY BETWEEN(SELECT AVG(SALARY) FROM EMPLOYEES WHERE DEPARTMENT_ID = 50) AND (SELECT AVG(SALARY) FROM EMPLOYEES WHERE DEPARTMENT_ID = 80);
8. 해당 부서 의 평균 임금 이 5000 이상 인 직원 의 이름  SELECT FIRST_NAME || ' ' || LAST_NAME AS NAME,SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID IN(SELECT DEPARTMENT_ID FROM EMPLOYEES GROUP BY DEPARTMENT_ID HAVING AVG(SALARY) > 5000);
9. 각 부서 에서 임금 이 가장 높 은 직원 의 정 보 를 나열 한다. 이름, 부서 번호, 월급  SELECT FIRST_NAME || ' ' || LAST_NAME AS NAME,SALARY,DEPARTMENT_ID FROM EMPLOYEES WHERE (DEPARTMENT_ID,SALARY) IN(SELECT DEPARTMENT_ID,MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT_ID);
10. 가장 높 은 부서 의 평균 임금 은 얼마 입 니까?  SELECT MAX(AVGSALARY) FROM(SELECT DEPARTMENT_ID,AVG(SALARY) AVGSALARY FROM EMPLOYEES GROUP BY DEPARTMENT_ID);
11. 어떤 부서 의 인원 이 90 번 부서 의 인원 보다 많 습 니까?  SELECT DEPARTMENT_ID,COUNT(*) FROM EMPLOYEES GROUP BY DEPARTMENT_ID HAVING COUNT(*) > (SELECT COUNT(*) FROM EMPLOYEES WHERE DEPARTMENT_ID = 90);
12. Den (FIRST NAME), Raphaely (LAST NAME) 의 리더 가 누구 인지 (비 관련 하위 조회)  SELECT FIRST_NAME || ' ' || LAST_NAME FROM EMPLOYEES WHERE EMPLOYEE_ID =(SELECT MANAGER_ID FROM EMPLOYEES WHERE FIRST_NAME = 'Den' AND LAST_NAME = 'Raphaely');
13. Den (FIRST NAME), Raphaely (LAST NAME) 가 누 구 를 이 끌 고 있 는 지 (비 관련 하위 조회)  SELECT FIRST_NAME || ' ' || LAST_NAME FROM EMPLOYEES WHERE MANAGER_ID IN(SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE FIRST_NAME = 'Den' AND LAST_NAME = 'Raphaely');  또는:  SELECT FIRST_NAME || ' ' || LAST_NAME FROM EMPLOYEES WHERE MANAGER_ID =(SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE FIRST_NAME = 'Den' AND LAST_NAME = 'Raphaely');
14. 같은 부서 에서 함께 일 하고 입사 날짜 가 늦 지만 다른 동료 보다 월급 이 많은 직원: 이름, 월급, 입사 날짜 (관련 자 조회)  SELECT FIRST_NAME || ' ' || LAST_NAME AS ,SALARY AS ,HIRE_DATE AS FROM EMPLOYEES EMP1 WHERE EXISTS (SELECT 1 FROM EMPLOYEES EMP2 WHERE EMP2.DEPARTMENT_ID = EMP1.DEPARTMENT_ID AND EMP1.HIRE_DATE > EMP2.HIRE_DATE AND EMP1.SALARY > EMP2.SALARY);
15. 어떤 직원 이 Den (FIRST NAME), Raphaely (LAST NAME) 와 같은 부서 에 있 지 않 습 니까?  SELECT FIRST_NAME || ' ' || LAST_NAME FROM EMPLOYEES WHERE DEPARTMENT_ID <>(SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE FIRST_NAME = 'Den' AND LAST_NAME = 'Raphaely');
또는:  SELECT FIRST_NAME || ' ' || LAST_NAME FROM EMPLOYEES WHERE DEPARTMENT_ID NOT IN(SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE FIRST_NAME = 'Den' AND LAST_NAME = 'Raphaely');
16. 어떤 직원 이 Den (FIRST NAME), Raphaely (LAST NAME) 와 같은 부서 에 있 지 않 습 니까?  SELECT FIRST_NAME || ' ' || LAST_NAME FROM EMPLOYEES EMP1 WHERE NOT EXISTS (SELECT 1 FROM EMPLOYEES EMP2 WHERE EMP1.DEPARTMENT_ID = EMP2.DEPARTMENT_ID AND EMP2.FIRST_NAME ='Den' AND EMP2.LAST_NAME ='Raphaely');
17. Finance 부서 에 어떤 직위 가 있 습 니까?  SELECT DISTINCT JOB_ID FROM EMPLOYEES WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE DEPARTMENT_NAME = 'Finance');
또는:  SELECT DISTINCT JOB_ID FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE DEPARTMENT_NAME = 'Finance');
18. Finance 부서 에 어떤 직위 가 있 습 니까?  SELECT DISTINCT JOB_ID FROM EMPLOYEES WHERE EXISTS(SELECT 1 FROM DEPARTMENTS WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID AND DEPARTMENTS.DEPARTMENT_NAME = 'Finance');

좋은 웹페이지 즐겨찾기