SHARE
TWEET

Untitled

a guest Oct 21st, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top