Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION veamos (id_ong_val int, comuna_val varchar, presupuesto_val int) RETURNS void AS $$
- declare
- project proyectos%ROWTYPE;
- type_mov varchar;
- id_mov_select int;
- presupuesto_valor int;
- people_attending int;
- type_rrss varchar;
- constant int;
- veamos_2 int;
- begin
- veamos_2 = 11;
- 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));
- constant := 1;
- 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
- LOOP
- id_mov_select := id_mov_select + constant;
- RAISE NOTICE '%', id_mov_select;
- type_mov := ('{marcha,redes sociales}'::text[])[ceil(random()*2)];
- presupuesto_valor := veamos_2 / (SELECT COUNT(consultas.id_proyecto) FROM (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 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 comuna LIKE (comuna_val)) AS consultas);
- INSERT INTO test(id_mov, id_ong, id_proy, presupuesto, tipo)
- VALUES (id_mov_select,id_ong_val,project.id_proyecto, presupuesto_valor,type_mov);
- IF ('marcha' = type_mov) THEN
- people_attending := random()*(100000-100)+100;
- INSERT INTO test_marcha(id_mov, fecha, lugar,n_esperado_personas)
- VALUES (id_mov_select,CURRENT_DATE + 90 * interval '1 day','vitacura',people_attending);
- ELSE
- IF(project.tipo = 1) THEN
- type_rrss := 'spam';
- ELSIF (project.tipo = 2) THEN
- type_rrss := 'video';
- ELSE
- type_rrss := 'imagenes';
- END IF;
- INSERT INTO test_rrss(id_mov,tipo_contendio, fecha, duracion)
- VALUES (id_mov_select, type_rrss ,CURRENT_DATE, 90);
- END IF;
- END LOOP;
- end;
- $$ LANGUAGE plpgsql
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement