Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION veamos (id_ong_val int, comuna_val varchar, presupuesto_val int) RETURNS void AS $$
  2.  
  3. declare
  4. project proyectos%ROWTYPE;
  5. type_mov varchar;
  6. id_mov_select int;
  7. presupuesto_valor int;
  8. people_attending int;
  9. type_rrss varchar;
  10. constant int;
  11. veamos_2 int;
  12. begin
  13. veamos_2 = 11;
  14. id_mov_select := (SELECT max(id_mov) FROM dblink('conn', 'SELECT * FROM movilizacion_general') AS movilizacion_general(id_mov integer, id_ong integer, id_proy integer, presupuesto integer, tipo varchar));
  15. constant := 1;
  16. for project in SELECT * FROM proyectos, (SELECT proyectos.id_proyecto FROM proyectos, (SELECT DISTINCT(recursos.id_proyecto), aprobados, rechazados FROM recursos, (SELECT id_proyecto, COUNT(id_proyecto) AS aprobados FROM recursos WHERE status = 'aprobado' GROUP BY id_proyecto) AS ap, (SELECT id_proyecto, COUNT(id_proyecto) AS rechazados FROM recursos WHERE status = 'rechazado' GROUP BY id_proyecto) AS rech WHERE recursos.id_proyecto = ap.id_proyecto AND recursos.id_proyecto = rech.id_proyecto) AS rechazados_mayor WHERE upper(proyectos.comuna) LIKE upper(comuna_val) AND proyectos.id_proyecto = rechazados_mayor.id_proyecto AND rechazados > aprobados UNION SELECT proyectos.id_proyecto FROM dblink('conn', 'SELECT id_proy FROM (SELECT id_proy, COUNT(id_mov) AS cantidad FROM movilizacion_general GROUP BY id_proy) AS proyecto_cantidad WHERE cantidad < 60') AS tabla_proy_menos60(id_proy int), proyectos WHERE proyectos.id_proyecto = tabla_proy_menos60.id_proy AND upper(comuna) LIKE upper(comuna_val)) AS elected WHERE elected.id_proyecto = proyectos.id_proyecto
  17.  
  18. LOOP
  19. id_mov_select := id_mov_select + constant;
  20. RAISE NOTICE '%', id_mov_select;
  21. type_mov := ('{marcha,redes sociales}'::text[])[ceil(random()*2)];
  22.  
  23. presupuesto_valor := veamos_2 / (SELECT COUNT(consultas.id_proyecto) FROM (SELECT proyectos.id_proyecto FROM proyectos,
  24. (SELECT DISTINCT(recursos.id_proyecto), aprobados, rechazados FROM recursos,
  25. (SELECT id_proyecto, COUNT(id_proyecto) AS aprobados FROM recursos WHERE status = 'aprobado' GROUP BY id_proyecto)
  26. AS ap,
  27. (SELECT id_proyecto, COUNT(id_proyecto) AS rechazados FROM recursos WHERE status = 'rechazado' GROUP BY id_proyecto)
  28. AS rech
  29. WHERE recursos.id_proyecto = ap.id_proyecto
  30. AND recursos.id_proyecto = rech.id_proyecto) AS rechazados_mayor
  31. WHERE proyectos.comuna LIKE upper(comuna_val)
  32. AND proyectos.id_proyecto = rechazados_mayor.id_proyecto
  33. AND rechazados > aprobados
  34. UNION
  35. SELECT proyectos.id_proyecto FROM dblink('conn', 'SELECT id_proy FROM (SELECT id_proy, COUNT(id_mov) AS cantidad FROM movilizacion_general GROUP BY id_proy)
  36. AS proyecto_cantidad WHERE cantidad < 60')
  37. AS tabla_proy_menos60(id_proy int),
  38. proyectos
  39. WHERE proyectos.id_proyecto = tabla_proy_menos60.id_proy
  40. AND comuna LIKE (comuna_val)) AS consultas);
  41.  
  42.  
  43. INSERT INTO test(id_mov, id_ong, id_proy, presupuesto, tipo)
  44. VALUES (id_mov_select,id_ong_val,project.id_proyecto, presupuesto_valor,type_mov);
  45.  
  46. IF ('marcha' = type_mov) THEN
  47. people_attending := random()*(100000-100)+100;
  48. INSERT INTO test_marcha(id_mov, fecha, lugar,n_esperado_personas)
  49. VALUES (id_mov_select,CURRENT_DATE + 90 * interval '1 day','vitacura',people_attending);
  50.  
  51. ELSE
  52. IF(project.tipo = 1) THEN
  53. type_rrss := 'spam';
  54. ELSIF (project.tipo = 2) THEN
  55. type_rrss := 'video';
  56. ELSE
  57. type_rrss := 'imagenes';
  58. END IF;
  59.  
  60. INSERT INTO test_rrss(id_mov,tipo_contendio, fecha, duracion)
  61. VALUES (id_mov_select, type_rrss ,CURRENT_DATE, 90);
  62.  
  63. END IF;
  64.  
  65. END LOOP;
  66. end;
  67. $$ LANGUAGE plpgsql
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement