Advertisement
Guest User

cursoresemma

a guest
Feb 16th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.01 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////////
  2. /////CURSOR
  3.  
  4.  
  5.  
  6. SET SERVEROUTPUT ON;
  7. DECLARE
  8. NombreTie VARCHAR(200);
  9. Id_tie INTEGER;
  10. Num_ventas INTEGER;
  11. MontoFact NUMBER;
  12. Promedio NUMBER :=0;
  13. Varianza NUMBER :=0;
  14. Desviacion NUMBER;
  15.  
  16. CURSOR CurTienda IS
  17. SELECT TIENDAS.TIENDAID, TIENDAS.TIENDA, COUNT(*) AS Num_ventas
  18. FROM TIENDAS, FACTURAS WHERE TIENDAS.TIENDAID=FACTURAS.TIENDAID
  19. GROUP BY TIENDAS.TIENDAID, TIENDAS.TIENDA;
  20.  
  21. CURSOR CurTiendaVentas ( Id_tie INTEGER) IS
  22. SELECT MONTOFACTURA FROM FACTURAS WHERE TIENDAID= Id_tie;
  23. BEGIN
  24. OPEN CurTienda;
  25. LOOP
  26. FETCH CurTienda INTO Id_tie ,NombreTie,Num_ventas;
  27. OPEN CurTiendaVentas (Id_tie);
  28. EXIT WHEN CurTienda%NOTFOUND;
  29. LOOP
  30. FETCH CurTiendaVentas INTO MontoFact;
  31. EXIT WHEN CurTiendaVentas%NOTFOUND;
  32. Promedio := Promedio + MontoFact;
  33. END LOOP;
  34. Promedio := round(Promedio / Num_ventas,2);
  35. CLOSE CurTiendaVentas;
  36. OPEN CurTiendaVentas(Id_tie);
  37. LOOP
  38. FETCH CurTiendaVentas INTO MontoFact;
  39. EXIT WHEN CurTiendaVentas%NOTFOUND;
  40. Varianza := Varianza + POWER(( MontoFact-Promedio),2);
  41. END LOOP;
  42. Varianza:= round((Varianza/(Num_ventas -1)),2);
  43. Desviacion := round((sqrt(Varianza)),2);
  44. dbms_output.put_line(NombreTie || ' PROMEDIO: ' || Promedio || ' VARIANZA: ' || Varianza || ' DESVIACION ESTANDAR: ' || Desviacion);
  45. CLOSE CurTiendaVentas;
  46. Promedio:=0;Varianza:=0;Desviacion:=0;
  47. END LOOP;
  48. CLOSE CurTienda;
  49. END;
  50.  
  51. //////////////////////////////////////////////////////////////////////////
  52.  
  53. SET SERVEROUTPUT ON;
  54. DECLARE
  55. TiendaPais VARCHAR(200);
  56. Pais VARCHAR(200);
  57. Num_ventas INTEGER;
  58. MontoFact NUMBER;
  59. Promedio NUMBER :=0;
  60. Varianza NUMBER :=0;
  61. Desviacion NUMBER;
  62.  
  63. CURSOR CurTiendaDatos IS
  64. SELECT DISTINCT TIENDAS.PAISTIENDA,COUNT(*) AS Num_ventas
  65. FROM TIENDAS, FACTURAS WHERE TIENDAS.PAISTIENDA=FACTURAS.NACIONALIDAD
  66. GROUP BY TIENDAS.PAISTIENDA;
  67.  
  68. CURSOR CurTiendaVenta ( Pais VARCHAR) IS
  69. SELECT MONTOFACTURA FROM FACTURAS WHERE NACIONALIDAD= Pais;
  70. BEGIN
  71. OPEN CurTiendaDatos;
  72. LOOP
  73. FETCH CurTiendaDatos INTO TiendaPais,Num_ventas;
  74. OPEN CurTiendaVenta ( TiendaPais);
  75. EXIT WHEN CurTiendaDatos%NOTFOUND;
  76. LOOP
  77. FETCH CurTiendaVenta INTO MontoFact;
  78. EXIT WHEN CurTiendaVenta%NOTFOUND;
  79. Promedio := Promedio + MontoFact;
  80. END LOOP;
  81. Promedio := round(Promedio / Num_ventas,2);
  82. CLOSE CurTiendaVenta;
  83. OPEN CurTiendaVenta( TiendaPais);
  84. LOOP
  85. FETCH CurTiendaVenta INTO MontoFact;
  86. EXIT WHEN CurTiendaVenta%NOTFOUND;
  87. Varianza := Varianza + POWER(( MontoFact-Promedio),2);
  88. END LOOP;
  89. Varianza:= round((Varianza/(Num_ventas -1)),2);
  90. Desviacion := round((sqrt(Varianza)),2);
  91. dbms_output.put_line(TiendaPais || ' PROMEDIO: ' || Promedio || ' VARIANZA: ' || Varianza || ' DESVIACION ESTANDAR: ' || Desviacion);
  92. CLOSE CurTiendaVenta;
  93. Promedio:=0;Varianza:=0;Desviacion:=0;
  94. END LOOP;
  95. CLOSE CurTiendaDatos;
  96. END;
  97.  
  98.  
  99. //////////////////////////////////////////////////////////////////////
  100.  
  101.  
  102. SET SERVEROUTPUT ON;
  103. DECLARE
  104. Seccion VARCHAR(200);
  105. Num_ventas INTEGER;
  106. MontoFact NUMBER;
  107. Promedio NUMBER :=0;
  108. Varianza NUMBER :=0;
  109. Desviacion NUMBER;
  110. idtienda integer;
  111. tienda varchar(20);
  112. CURSOR CurSeccionDatos IS
  113. SELECT TIENDAID,tienda
  114. FROM TIENDAS;
  115.  
  116. CURSOR CurTiendaSeccion ( IDTIENDA VARCHAR) IS
  117. SELECT DISTINCT PRODUCTOS.SECCION, SUM(DETALLEFACTURAS.MONTOVENTA) AS MONTOVENTA, COUNT(*)AS Num_ventas FROM DETALLEFACTURAS, PRODUCTOS, FACTURAS
  118. WHERE DETALLEFACTURAS.PRODUCTOID=PRODUCTOS.PRODUCTOID AND DETALLEFACTURAS.FACTURAID=FACTURAS.FACTURAID
  119. AND FACTURAS.TIENDAID=IDTIENDA
  120. GROUP BY PRODUCTOS.SECCION;
  121. BEGIN
  122. OPEN CurSeccionDatos;
  123. LOOP
  124. FETCH CurSeccionDatos INTO idtienda,tienda;
  125. OPEN CurTiendaSeccion ( idtienda );
  126. EXIT WHEN CurSeccionDatos%NOTFOUND;
  127. LOOP
  128. FETCH CurTiendaSeccion INTO Seccion,MontoFact,Num_ventas;
  129. EXIT WHEN CurTiendaSeccion%NOTFOUND;
  130. Promedio := Promedio + MontoFact;
  131. END LOOP;
  132. Promedio := round(Promedio / Num_ventas,2);
  133. CLOSE CurTiendaSeccion;
  134. OPEN CurTiendaSeccion( idtienda );
  135. LOOP
  136. FETCH CurTiendaSeccion INTO Seccion,MontoFact,Num_ventas;
  137. EXIT WHEN CurTiendaSeccion%NOTFOUND;
  138. Varianza := Varianza + POWER(( MontoFact-Promedio),2);
  139. END LOOP;
  140. Varianza:= round((Varianza/(Num_ventas -1)),2);
  141. Desviacion := round((sqrt(Varianza)),2);
  142. dbms_output.put_line(tienda || ' ' || 'PROMEDIO DE SECCIONES: ' || ' PROMEDIO: ' || Promedio || ' VARIANZA: ' || Varianza || ' DESVIACION ESTANDAR: ' || Desviacion);
  143. CLOSE CurTiendaSeccion;
  144. Promedio:=0;Varianza:=0;Desviacion:=0;
  145. END LOOP;
  146. CLOSE CurSeccionDatos;
  147. END;
  148.  
  149.  
  150. //////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement