-
SQL Study2 - SELECTDB/SQL 2018. 8. 6. 14:54반응형-- 1. 모든 사원의 이름(FIRST_NAME, LAST_NAME)을 조회하라.SELECT FIRST_NAME, LAST_NAMEFROM EMPLOYEES;-- 2. 모든 사원의 모든 정보를 조회하라.SELECT *FROM EMPLOYEES;-- 3. 모든 도시 명을 조회하라.SELECT CITYFROM LOCATIONS;-- 4. 이름(FIRST_NAME)이 M 으로 시작하는 사원의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE FIRST_NAME LIKE 'M%';-- 5. 이름(FIRST_NAME)의 두 번째 글자가 'a'인 사원의 이름(FIRST_NAME)과 연봉을 조회하라.SELECT FIRST_NAME, SALARYFROM EMPLOYEESWHERE FIRST_NAME LIKE '_a%';-- 6. 도시 명을 오름차순 정렬하라.SELECT CITYFROM LOCATIONSORDER BY CITY;-- 7. 부서 명을 내림차순 정렬하라.SELECT DEPARTMENT_NAMEFROM DEPARTMENTSORDER BY DEPARTMENT_NAME DESC;-- 8. 연봉이 7000 이상인 사원들의 모든 정보를 연봉순(오름차순)으로 정렬하라.SELECT *FROM EMPLOYEESWHERE SALARY > 7000ORDER BY SALARY ASC;-- 9. 인센티브(COMMISSION_PCT)를 받지 않는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE COMMISSION_PCT IS NULL;-- 10. 인센티브(COMMISSION_PCT)를 받는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE COMMISSION_PCT IS NOT NULL;-- 11. 2007년 06월 21일에 입사한 사원의 사원번호, 이름(FIRST_NAME, LAST_NAME) 그리고 부서번호를 조회하라.SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_IDFROM EMPLOYEESWHERE HIRE_DATE = TO_DATE('2007/06/21', 'YYYY/MM/DD');-- 12. 2006년에 입사한 사원의 사원번호와 입사일을 조회하라.SELECT EMPLOYEE_ID, HIRE_DATEFROM EMPLOYEESWHERE HIRE_DATE >= TO_DATE('2006-01-01','YYYY/MM/DD')AND HIRE_DATE <= TO_DATE('2006-12-31','YYYY/MM/DD');-- 13. 이름(FIRST_NAME)의 길이가 5글자 이상인 사원을 조회하라.SELECT *FROM EMPLOYEESWHERE FIRST_NAME LIKE '_____%';-- 14. 부서번호별 사원수를 조회하라. (부서번호 오름차순 정렬)SELECT DEPARTMENT_ID, COUNT(1)FROM EMPLOYEESGROUP BY DEPARTMENT_IDORDER BY DEPARTMENT_ID;-- 15. 직무 아이디별 평균 연봉을 조회하라. (직무 아이디 내림차순 정렬)SELECT JOB_ID, AVG(SALARY)FROM EMPLOYEESGROUP BY JOB_IDORDER BY JOB_ID DESC;-- 16. 상사가 있는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE MANAGER_ID IS NOT NULL;-- 17. 상사가 없는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE MANAGER_ID IS NULL;-- 18. 모든 사원들의 사원번호, 이름(FIRST_NAME, LAST_NAME), 부서번호 그리고 부서명을 조회하라.SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID;-- 19. 모든 부서의 부서명과 도시명을 조회하라.SELECT D.DEPARTMENT_ID, L.CITYFROM DEPARTMENTS D, LOCATIONS LWHERE D.LOCATION_ID = L.LOCATION_ID;-- 20. 모든 사원들의 사원번호, 부서명, 직무명을 조회하라.SELECT E.EMPLOYEE_ID, D.DEPARTMENT_NAME, J.JOB_TITLEFROM EMPLOYEES E, DEPARTMENTS D, JOBS JWHERE D.DEPARTMENT_ID = E.DEPARTMENT_IDAND J.JOB_ID = E.JOB_ID;-- 21. 모든 사원들의 사원번호, 부서명, 직무명, 도시명을 조회하라.SELECT EMPLOYEE_ID, DEPARTMENT_NAME, JOB_TITLE, CITYFROM EMPLOYEES E, DEPARTMENTS D, JOBS J, LOCATIONS LWHERE E.DEPARTMENT_ID = D.DEPARTMENT_IDAND E.JOB_ID = J.JOB_IDAND D.LOCATION_ID = L.LOCATION_ID;-- 22. 10번, 20번, 30번 부서에서 근무하는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE DEPARTMENT_ID IN (10,20,30);-- 23. 6인 미만의 사원이 근무하는 부서의 이름을 조회하라.SELECT DEPARTMENT_NAMEFROM DEPARTMENTSWHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_IDFROM EMPLOYEESGROUP BY DEPARTMENT_IDHAVING COUNT(1) < 6);-- 24. 4인 미만의 사원이 근무하는 부서의 평균 연봉과 부서명을 조회하라.SELECT D.DEPARTMENT_NAME, AVG(SALARY)FROM DEPARTMENTS D, EMPLOYEES EWHERE D.DEPARTMENT_ID = E.DEPARTMENT_IDGROUP BY DEPARTMENT_NAMEHAVING COUNT(1)<4;-- 25. IT 부서의 연봉 총합을 조회하라.SELECT D.DEPARTMENT_NAME, SUM(SALARY) SUM_SALARYFROM DEPARTMENTS D, EMPLOYEES EWHERE D.DEPARTMENT_ID = E.DEPARTMENT_IDAND D.DEPARTMENT_NAME = 'IT'GROUP BY DEPARTMENT_NAME;-- 26. 대륙명(REGIONS)별 도시의 개수를 조회하라.SELECT R.REGION_NAME, COUNT(1)FROM COUNTRIES C, LOCATIONS L, REGIONS RWHERE C.COUNTRY_ID = L.COUNTRY_IDAND C.REGION_ID = R.REGION_IDGROUP BY R.REGION_NAME;SELECT R.REGION_NAME, C.CNTFROM (SELECT COUNT(1) CNT, C.REGION_IDFROM COUNTRIES C, LOCATIONS LWHERE C.COUNTRY_ID = L.COUNTRY_IDGROUP BY C.REGION_ID) C, REGIONS RWHERE C.REGION_ID = R.REGION_ID;SELECT R.REGION_NAME, COUNT(L.LOCATION_ID)FROM REGIONS R, COUNTRIES C, LOCATIONS LWHERE R.REGION_ID = C.REGION_IDAND C.COUNTRY_ID = L.COUNTRY_IDGROUP BY R.REGION_NAME;-- 27. 도시명 별 부서의 개수를 조회하라.SELECT CITY, COUNT(1) NUM_OF_DEPARTMENTFROM LOCATIONS L, DEPARTMENTS DWHERE L.LOCATION_ID = D.LOCATION_IDGROUP BY CITY;-- 28. 부서가 존재하지 않는 도시를 조회하라.SELECT CITYFROM LOCATIONSWHERE LOCATION_ID NOT IN (SELECT L.LOCATION_IDFROM DEPARTMENTS D, LOCATIONS LWHERE D.LOCATION_ID = L.LOCATION_ID);-- 29. 사원이 존재하지 않는 국가를 조회하라.SELECT COUNTRY_NAMEFROM COUNTRIESWHERE COUNTRY_ID NOT IN (SELECT DISTINCT L.COUNTRY_IDFROM LOCATIONS L, DEPARTMENTS D, EMPLOYEES EWHERE L.LOCATION_ID = D.LOCATION_IDAND D.DEPARTMENT_ID = E.DEPARTMENT_ID);-- 30. 150번 사원보다 빨리 입사한 사원 중 가장 최신에 입사한 사원의 모든 정보를 조회하라.SELECT *FROM (SELECT *FROM EMPLOYEESWHERE HIRE_DATE < (SELECT HIRE_DATEFROM EMPLOYEESWHERE EMPLOYEE_ID = 150)ORDER BY HIRE_DATE DESC)WHERE ROWNUM = 1;-- 31. 직무를 전환한 이력이 있는 사원의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE EMPLOYEE_ID IN (SELECT EMPLOYEE_IDFROM JOB_HISTORY);-- 32. 부서장으로 있는 사원의 모든 정보와 부서명을 조회하라.SELECT E.*, D.DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DWHERE E.EMPLOYEE_ID = D.MANAGER_ID;-- 33. 다른 사원의 상사인 사원의 모든 정보를 조회하라.SELECT DISTINCT MANAGER.*FROM EMPLOYEES MANAGER, EMPLOYEES EWHERE MANAGER.EMPLOYEE_ID = E.MANAGER_ID;-- 34. 이름(FIRST_NAME)이 C로 시작하고 s로 끝나는 사원의 부서명, 직무명, 도시명, 국가명, 대륙명을 조회하라.SELECT E.FIRST_NAME, D.DEPARTMENT_NAME, J.JOB_TITLE, L.CITY, C.COUNTRY_NAME, R.REGION_NAMEFROM EMPLOYEES E, DEPARTMENTS D, JOBS J, LOCATIONS L, COUNTRIES C, REGIONS RWHERE E.DEPARTMENT_ID = D.DEPARTMENT_IDAND E.JOB_ID = J.JOB_IDAND D.LOCATION_ID = L.LOCATION_IDAND L.COUNTRY_ID = C.COUNTRY_IDAND C.REGION_ID = R.REGION_IDAND FIRST_NAME LIKE 'C%s';-- 35. 직무를 전환한 이력이 없는 사원의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE EMPLOYEE_ID NOT IN (SELECT EMPLOYEE_IDFROM JOB_HISTORY);-- 36. 150번 사원보다 늦게 입사한 사원 중 150번 사원보다 더 많은 연봉을 받는 사원을 조회하라.SELECT E.*FROM EMPLOYEES E, (SELECT *FROM EMPLOYEESWHERE EMPLOYEE_ID = 150) ID_150WHERE E.HIRE_DATE > ID_150.HIRE_DATEAND E.SALARY > ID_150.SALARY;-- 37. 자신의 상사가 자신 보다 늦게 입사한 사원의-- 모든 정보를 조회하라.SELECT E.*FROM EMPLOYEES E, EMPLOYEES MANAGERWHERE E.MANAGER_ID = MANAGER.EMPLOYEE_IDAND E.HIRE_DATE < MANAGER.HIRE_DATE;-- 38. 100번 사원을 직속 상사로 두고 있는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEESWHERE MANAGER_ID = 100;-- 39. 100번 사원을 상사로 두고 있는-- 모든 사원들의 모든 정보를 조회하라.SELECT LEVEL, E.*FROM EMPLOYEES ESTART WITH E.MANAGER_ID = 100CONNECT BY PRIOR E.EMPLOYEE_ID = E.MANAGER_ID;-- 112번 사원의 모든 상사를 조회하라.SELECT LEVEL, E.*FROM EMPLOYEES ESTART WITH E.EMPLOYEE_ID = 112CONNECT BY PRIOR E.MANAGER_ID = E.EMPLOYEE_ID;-- 150번 사원의 모든 상사들의-- 이름(FIRST_NAME)과 부서명을 조회하라.SELECT LEVEL, E.FIRST_NAME, D.DEPARTMENT_NAME, E.EMPLOYEE_ID, E.MANAGER_IDFROM EMPLOYEES E, DEPARTMENTS DWHERE D.DEPARTMENT_ID = E.DEPARTMENT_IDSTART WITH E.EMPLOYEE_ID = 150CONNECT BY PRIOR E.MANAGER_ID = E.EMPLOYEE_ID;-- 40. 사원수가 가장 많은 도시의 이름을 조회하라.SELECT A.CITY_NAMEFROM (SELECT L.CITY CITY_NAME, COUNT(L.LOCATION_ID) LO_COUNTFROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS LWHERE D.DEPARTMENT_ID = E.DEPARTMENT_IDAND L.LOCATION_ID = D.LOCATION_IDGROUP BY L.CITYORDER BY LO_COUNT DESC) AWHERE ROWNUM = 1;SELECT L.LOCATION_ID, COUNT(L.LOCATION_ID) LO_COUNTFROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS LWHERE D.DEPARTMENT_ID = E.DEPARTMENT_IDAND L.LOCATION_ID = D.LOCATION_IDGROUP BY L.LOCATION_IDORDER BY LO_COUNT DESC;-- 41. 직무의 종류가 가장 많은 부서의 이름을 조회하라.SELECT DEPARTMENT_NAMEFROM (SELECT DEPARTMENT_NAME, COUNT( DISTINCT JOB_ID) JOFROM DEPARTMENTS D, EMPLOYEES EWHERE D.DEPARTMENT_ID = E.DEPARTMENT_IDGROUP BY DEPARTMENT_NAMEORDER BY JO DESC)WHERE ROWNUM = 1;SELECT DEPARTMENT_NAMEFROM (SELECT DEPARTMENT_NAME, COUNT(1) CNTFROM (SELECT D.DEPARTMENT_NAME, E.JOB_IDFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID = D.DEPARTMENT_IDGROUP BY D.DEPARTMENT_NAME, E.JOB_ID)GROUP BY DEPARTMENT_NAMEORDER BY CNT DESC)WHERE ROWNUM = 1;-- 42. 담당 직무의 최대 연봉을 받고 있는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEES E, JOBS JWHERE E.JOB_ID = J.JOB_IDAND J.MAX_SALARY = E.SALARY;SELECT *FROM EMPLOYEES E, (SELECT JOB_ID, MAX(SALARY) MAX_SALFROM EMPLOYEESGROUP BY JOB_ID) M_EWHERE E.JOB_ID = M_E.JOB_IDAND E.SALARY = M_E.MAX_SAL;-- 43. 담당 직무의 최소 연봉을 받고 있는 사원들의 모든 정보를 조회하라.SELECT *FROM EMPLOYEES E, JOBS JWHERE E.JOB_ID = J.JOB_IDAND E.SALARY = J.MIN_SALARY;-- 44. 부서와 직무별 최대연봉, 최소연봉, 사원수를 조회하라.SELECT D.DEPARTMENT_ID,J.JOB_ID,MAX(SALARY),MIN(SALARY),COUNT(1)FROM DEPARTMENTS D,EMPLOYEES E,JOBS JWHERE E.DEPARTMENT_ID = D.DEPARTMENT_IDAND J.JOB_ID = E.JOB_IDGROUP BY D.DEPARTMENT_ID,J.JOB_ID;-- 45. 사원수가 가장 많은 도시에서 근무하는 모든 사원들의 연봉 총합을 조회하라.SELECT L.CITY, SUM(SALARY) SUM_SALARYFROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS L, (SELECT *FROM (SELECT L.CITY, COUNT(1) CNTFROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS LWHERE E.DEPARTMENT_ID = D.DEPARTMENT_IDAND D.LOCATION_ID = L.LOCATION_IDGROUP BY L.CITYORDER BY CNT DESC)WHERE ROWNUM = 1) L_COUNTWHERE E.DEPARTMENT_ID = D.DEPARTMENT_IDAND L.LOCATION_ID = D.LOCATION_IDAND L.CITY = L_COUNT.CITYGROUP BY L.CITY;-- 46. 사원수가 가장 많은 도시에서 근무하는 모든 사원들의 부서별 및 직무별 평균 연봉을 조회하라.-- 47. 입사일이 가장 오래된 사원을 조회하라.-- 48. 입사일이 가장 최근인 사원을 조회하라.-- 49. 가장 최근에 입사한 사원과 가장 오래전에 입사한 사원의 일차를 계산해 조회하라.-- 50. 가장 최근에 입사한 사원과 가장 오래전에 입사한 사원의 시간차를 계산해 조회하라.반응형
'DB > SQL' 카테고리의 다른 글
Eclipse - SQL Explorer 실행 (0) 2018.08.26 SQL Study3 - SELECT (0) 2018.08.07 SQL SELECT Study (0) 2018.08.03 SQL - JOIN, SUB QUERY, INLINE TABLE, IN VIEW (0) 2018.08.03 SQL - SELECT (0) 2018.08.01 댓글