Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.50 KB | None | 0 0
  1. SET SERVEROUTPUT ON;
  2.  
  3. -- EJERCICIO 1
  4. DECLARE
  5.  
  6. V_MAX_SALARY VARCHAR2(10);
  7. V_AVG_SALARY VARCHAR2(10);
  8. V_MIN_SALARY VARCHAR2(10);
  9. V_SUM_SALARY VARCHAR2(10);
  10. V_TOTAL_EMPLOYEES VARCHAR2(10);
  11.  
  12. ERR_CODIGO_ERROR NUMBER;
  13. ERR_MENSAJE_ERROR VARCHAR2(255);
  14.  
  15. BEGIN
  16.  
  17. SELECT
  18. TO_CHAR(MAX(SALARY),'$999,999'),
  19. TO_CHAR(ROUND(AVG(SALARY)),'$999,999'),
  20. TO_CHAR(MIN(SALARY),'$999,999'),
  21. TO_CHAR(SUM(SALARY),'$999,999'),
  22. COUNT(EMPLOYEE_ID)
  23.  
  24. INTO
  25. V_MAX_SALARY,
  26. V_AVG_SALARY,
  27. V_MIN_SALARY,
  28. V_SUM_SALARY,
  29. V_TOTAL_EMPLOYEES
  30. FROM EMPLOYEES;
  31.  
  32. DBMS_OUTPUT.PUT_LINE(LPAD(('INFORME DE LA EMPRESA ' || SYSDATE) ,200,' '));
  33. DBMS_OUTPUT.PUT_LINE(LPAD('------------------------------------------------',60,' '));
  34. DBMS_OUTPUT.PUT_LINE('SALARIO MÁXIMO SALARIO PROMEDIO SALARIO MÍNIMO SALARIO TOTAL');
  35. DBMS_OUTPUT.PUT_LINE('-------------------------------------------------------------------------------');
  36. DBMS_OUTPUT.PUT_LINE(' ' || V_MAX_SALARY || ' ' || V_AVG_SALARY || ' ' || V_MIN_SALARY || ' ' || V_SUM_SALARY);
  37. DBMS_OUTPUT.PUT_LINE('-------------------------------------------------------------------------------');
  38. DBMS_OUTPUT.PUT_LINE('LOS VALORES CALCULADOS ESTÁN EFECTUADOS SOBRE ' || V_TOTAL_EMPLOYEES || ' EMPLEADOS');
  39.  
  40. EXCEPTION
  41. WHEN NO_DATA_FOUND THEN
  42. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT NO RECUPERA DATOS');
  43. WHEN TOO_MANY_ROWS THEN
  44. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT RETORNA MUCHOS DATOS');
  45. WHEN OTHERS THEN
  46. ERR_CODIGO_ERROR := SQLCODE;
  47. ERR_MENSAJE_ERROR := SQLERRM;
  48. DBMS_OUTPUT.PUT_LINE('CUALQUIER OTRO ERROR SERÁ CAPTURADO DE IGUAL FORMA');
  49. DBMS_OUTPUT.PUT_LINE('CODIGO : ' || ERR_CODIGO_ERROR);
  50. DBMS_OUTPUT.PUT_LINE('ERROR : ' || ERR_MENSAJE_ERROR);
  51. END;
  52.  
  53. -- EJERCICIO 2
  54.  
  55. DECLARE
  56.  
  57. V_DEPARTMENT_NAME1 DEPARTMENTS.DEPARTMENT_NAME%TYPE;
  58. V_COUNT_DEPARTMENT1 NUMBER;
  59. V_DEPARTMENT_NAME2 DEPARTMENTS.DEPARTMENT_NAME%TYPE;
  60. V_COUNT_DEPARTMENT2 NUMBER;
  61.  
  62. ERR_CODIGO_ERROR NUMBER;
  63. ERR_MENSAJE_ERROR VARCHAR2(255);
  64.  
  65. BEGIN
  66.  
  67. SELECT
  68. D.DEPARTMENT_NAME,
  69. COUNT(E.DEPARTMENT_ID)
  70. INTO
  71. V_DEPARTMENT_NAME1,
  72. V_COUNT_DEPARTMENT1
  73.  
  74. FROM DEPARTMENTS D
  75. JOIN EMPLOYEES E
  76. ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
  77. WHERE ROWNUM = 1
  78. group by D.DEPARTMENT_NAME, DEPARTMENT_NAME
  79. HAVING COUNT(E.DEPARTMENT_ID) = (SELECT
  80. MIN(COUNT(E.DEPARTMENT_ID))
  81. FROM DEPARTMENTS D
  82. JOIN EMPLOYEES E
  83. ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
  84. group by D.DEPARTMENT_NAME);
  85.  
  86. SELECT
  87. D.DEPARTMENT_NAME,
  88. COUNT(E.DEPARTMENT_ID)
  89. INTO
  90. V_DEPARTMENT_NAME2,
  91. V_COUNT_DEPARTMENT2
  92. FROM DEPARTMENTS D
  93. JOIN EMPLOYEES E
  94. ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
  95. group by D.DEPARTMENT_NAME, DEPARTMENT_NAME
  96. HAVING COUNT(E.DEPARTMENT_ID) = (SELECT
  97. MAX(COUNT(E.DEPARTMENT_ID))
  98. FROM DEPARTMENTS D
  99. JOIN EMPLOYEES E
  100. ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
  101. group by D.DEPARTMENT_NAME);
  102.  
  103. DBMS_OUTPUT.PUT_LINE('INFORME PARA REDISTRIBUIR EMPLEADOS');
  104. DBMS_OUTPUT.PUT_LINE('-----------------------------------');
  105. DBMS_OUTPUT.PUT_LINE(' ');
  106. DBMS_OUTPUT.PUT_LINE('DEPARTAMENTO TOTAL EMPLEADOS');
  107. DBMS_OUTPUT.PUT_LINE('-----------------------------------------');
  108. DBMS_OUTPUT.PUT_LINE(V_DEPARTMENT_NAME1 || ' ' || V_COUNT_DEPARTMENT1);
  109. DBMS_OUTPUT.PUT_LINE(V_DEPARTMENT_NAME2 || ' ' || V_COUNT_DEPARTMENT2);
  110.  
  111. EXCEPTION
  112. WHEN NO_DATA_FOUND THEN
  113. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT NO RECUPERA DATOS');
  114. WHEN TOO_MANY_ROWS THEN
  115. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT RETORNA MUCHOS DATOS');
  116. WHEN OTHERS THEN
  117. ERR_CODIGO_ERROR := SQLCODE;
  118. ERR_MENSAJE_ERROR := SQLERRM;
  119. DBMS_OUTPUT.PUT_LINE('CUALQUIER OTRO ERROR SERÁ CAPTURADO DE IGUAL FORMA');
  120. DBMS_OUTPUT.PUT_LINE('CODIGO : ' || ERR_CODIGO_ERROR);
  121. DBMS_OUTPUT.PUT_LINE('ERROR : ' || ERR_MENSAJE_ERROR);
  122.  
  123. END;
  124.  
  125. -- EJERCICIO 3
  126.  
  127. DECLARE
  128.  
  129. V_NOMBRE VARCHAR2(45);
  130. V_ANIOS NUMBER;
  131. V_SALARIO VARCHAR2(10);
  132. V_BONO VARCHAR2(10);
  133.  
  134. ERR_CODIGO_ERROR NUMBER;
  135. ERR_MENSAJE_ERROR VARCHAR2(255);
  136.  
  137. BEGIN
  138.  
  139. SELECT
  140. FIRST_NAME || ' ' || LAST_NAME,
  141. TRUNC((SYSDATE - HIRE_DATE)/365),
  142. TO_CHAR(SALARY,'$999,999'),
  143. TO_CHAR(SALARY*((TRUNC((SYSDATE - HIRE_DATE)/365))/100),'$999,999')
  144. INTO
  145. V_NOMBRE,
  146. V_ANIOS,
  147. V_SALARIO,
  148. V_BONO
  149. FROM EMPLOYEES
  150. WHERE TRUNC((SYSDATE - HIRE_DATE)/365) = (SELECT MAX(TRUNC((SYSDATE - HIRE_DATE)/365))
  151. FROM EMPLOYEES);
  152.  
  153. DBMS_OUTPUT.PUT_LINE('INFORME PAGO POR ANTIGUEDAD');
  154. DBMS_OUTPUT.PUT_LINE('---------------------------');
  155. DBMS_OUTPUT.PUT_LINE('EMPLEADO AÑOS TRABAJADOS SALARIO ACTUAL VALOR BONO');
  156. DBMS_OUTPUT.PUT_LINE('----------------------------------------------------------------');
  157. DBMS_OUTPUT.PUT_LINE(V_NOMBRE || ' ' || V_ANIOS || ' ' || V_SALARIO || ' ' || V_BONO);
  158.  
  159.  
  160. EXCEPTION
  161. WHEN NO_DATA_FOUND THEN
  162. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT NO RECUPERA DATOS');
  163. WHEN TOO_MANY_ROWS THEN
  164. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT RETORNA MUCHOS DATOS');
  165. WHEN OTHERS THEN
  166. ERR_CODIGO_ERROR := SQLCODE;
  167. ERR_MENSAJE_ERROR := SQLERRM;
  168. DBMS_OUTPUT.PUT_LINE('CUALQUIER OTRO ERROR SERÁ CAPTURADO DE IGUAL FORMA');
  169. DBMS_OUTPUT.PUT_LINE('CODIGO : ' || ERR_CODIGO_ERROR);
  170. DBMS_OUTPUT.PUT_LINE('ERROR : ' || ERR_MENSAJE_ERROR);
  171.  
  172. END;
  173.  
  174. -- EJERCICIO 4
  175.  
  176. DECLARE
  177.  
  178. V_MANAGER_ID EMPLOYEES.MANAGER_ID%TYPE;
  179. V_NAME VARCHAR2(50);
  180. V_EMPLEADOS_CARGO NUMBER;
  181. V_BONO VARCHAR2(10);
  182.  
  183. ERR_CODIGO_ERROR NUMBER;
  184. ERR_MENSAJE_ERROR VARCHAR2(255);
  185.  
  186. BEGIN
  187.  
  188. SELECT
  189. MANAGER_ID,
  190. COUNT(EMPLOYEE_ID),
  191. TO_CHAR(COUNT(EMPLOYEE_ID)*1000,'$999,999')
  192. INTO
  193. V_MANAGER_ID,
  194. V_EMPLEADOS_CARGO,
  195. V_BONO
  196.  
  197. FROM EMPLOYEES
  198. GROUP BY MANAGER_ID
  199. HAVING COUNT(EMPLOYEE_ID) = (SELECT MAX(COUNT(MANAGER_ID))
  200. FROM EMPLOYEES
  201. GROUP BY MANAGER_ID);
  202.  
  203. SELECT
  204. FIRST_NAME || ' ' || LAST_NAME
  205. INTO
  206. V_NAME
  207. FROM EMPLOYEES
  208. WHERE EMPLOYEE_ID = (SELECT MANAGER_ID
  209. FROM EMPLOYEES
  210. GROUP BY MANAGER_ID
  211. HAVING COUNT(EMPLOYEE_ID) = (SELECT MAX(COUNT(MANAGER_ID))
  212. FROM EMPLOYEES
  213. GROUP BY MANAGER_ID));
  214.  
  215. DBMS_OUTPUT.PUT_LINE('INFORME PAGO ASIGNACION JEFE CON MAS EMPLEADOS');
  216. DBMS_OUTPUT.PUT_LINE('----------------------------------------------');
  217. DBMS_OUTPUT.PUT_LINE('ID. JEFE: ' || V_MANAGER_ID || ' NOMBRE: ' || V_NAME);
  218. DBMS_OUTPUT.PUT_LINE(' ');
  219. DBMS_OUTPUT.PUT_LINE('EMPLEADOS A SU CARGO VALOR ASIGNACION');
  220. DBMS_OUTPUT.PUT_LINE('----------------------------------------------------');
  221. DBMS_OUTPUT.PUT_LINE(' ' || V_EMPLEADOS_CARGO || ' ' || V_BONO);
  222.  
  223. EXCEPTION
  224. WHEN NO_DATA_FOUND THEN
  225. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT NO RECUPERA DATOS');
  226. WHEN TOO_MANY_ROWS THEN
  227. DBMS_OUTPUT.PUT_LINE('LA CONSULTA SELECT RETORNA MUCHOS DATOS');
  228. WHEN OTHERS THEN
  229. ERR_CODIGO_ERROR := SQLCODE;
  230. ERR_MENSAJE_ERROR := SQLERRM;
  231. DBMS_OUTPUT.PUT_LINE('CUALQUIER OTRO ERROR SERÁ CAPTURADO DE IGUAL FORMA');
  232. DBMS_OUTPUT.PUT_LINE('CODIGO : ' || ERR_CODIGO_ERROR);
  233. DBMS_OUTPUT.PUT_LINE('ERROR : ' || ERR_MENSAJE_ERROR);
  234.  
  235. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement