upgrade_0.3_hacia_0.4.sql 6.18 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
-------------------------------------------
-- Adición datos de las elecciones 2014 (antes de los resultados)
-------------------------------------------

-------------------------------------------
-- Paso 1 - creación de los partidos
-------------------------------------------

-- ya existen los partidos MAS (MAS-IPSP) y PDC.
-- creación de los partidos MSM, UD y PVB (PVB-IEP)
INSERT INTO public.partidos (id_tipo_partido, nombre, sigla, color1, color2, color3) VALUES
  (1, 'Movimiento Sin Miedo', 'MSM', '84FE02', '0134FE', ''),
  (1, 'Partido Verde de Bolivia-Instrumento de la Ecología Política', 'PVB-IEP', '375D32', '', ''),
  (1, 'Unidad Demócrata', 'UD', 'FDCA38', 'FFFFFF', '0D944B');
-- corrección de los colores del PDC
UPDATE public.partidos SET
  "color1" = 'FC0000',
  "color2" = 'FEFEFE',
  "color3" = '00A300'
  WHERE "id_partido" = '43';

-- Verificación

SELECT * FROM partidos WHERE sigla IN ('MAS', 'PDC', 'UD', 'MSM', 'PVB-IEP');

-------------------------------------------
-- Paso 2 - creación de las elecciones
-------------------------------------------

-- creación de las elecciones
INSERT INTO public.elecciones (id_tipo_eleccion, fecha, id_tipo_dpa, descripcion, ano) VALUES
32 33 34
  (1, '2014-10-12', 1, '2014 - elecciones plurinominales (resultados parciales)', '2014'),
  (2, '2014-10-12', 1, '2014 - elecciones uninominales (resultados parciales)', '2014'),
  (3, '2014-10-12', 1, '2014 - elecciones especiales (resultados parciales)', '2014');  
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

-- Verificación

SELECT * FROM elecciones WHERE "ano" = '2014';

-------------------------------------------
-- Paso 3 - creación de los candidatos
-------------------------------------------

-- creación de los candidatos presidenciales
-- MAS
INSERT INTO public.candidatos (id_partido, id_tipo_partido, id_eleccion, id_dpa, presidente, vice_presidente)
SELECT p.id_partido, p.id_tipo_partido, e.id_eleccion, 1, p.p, p.vp
FROM (
  SELECT id_partido, id_tipo_partido, 'Juan Evo Morales Ayma' AS p, 'Álvaro Marcelo García Linera' AS vp FROM public.partidos WHERE sigla = 'MAS'
) AS p
JOIN (
  SELECT id_eleccion FROM public.elecciones WHERE ano = '2014'
) AS e ON true;
-- MSM
INSERT INTO public.candidatos (id_partido, id_tipo_partido, id_eleccion, id_dpa, presidente, vice_presidente)
SELECT p.id_partido, p.id_tipo_partido, e.id_eleccion, 1, p.p, p.vp
FROM (
  SELECT id_partido, id_tipo_partido, 'Juan Fernando Del Granado Cosío' AS p, 'Adriana Gil Moreno' AS vp FROM public.partidos WHERE sigla = 'MSM'
) AS p
JOIN (
  SELECT id_eleccion FROM public.elecciones WHERE ano = '2014'
) AS e ON true;
-- PDC
INSERT INTO public.candidatos (id_partido, id_tipo_partido, id_eleccion, id_dpa, presidente, vice_presidente)
SELECT p.id_partido, p.id_tipo_partido, e.id_eleccion, 1, p.p, p.vp
FROM (
  SELECT id_partido, id_tipo_partido, 'Jorge Fernando Tuto Quiroga Ramirez' AS p, 'Tomasa Yarhui Jacome' AS vp FROM public.partidos WHERE sigla = 'PDC'
) AS p
JOIN (
  SELECT id_eleccion FROM public.elecciones WHERE ano = '2014'
) AS e ON true;
-- PVB-IEP
INSERT INTO public.candidatos (id_partido, id_tipo_partido, id_eleccion, id_dpa, presidente, vice_presidente)
SELECT p.id_partido, p.id_tipo_partido, e.id_eleccion, 1, p.p, p.vp
FROM (
  SELECT id_partido, id_tipo_partido, 'Fernando Vargas Mosua' AS p, 'Mary Margot Soria Saravia' AS vp FROM public.partidos WHERE sigla = 'PVB-IEP'
) AS p
JOIN (
  SELECT id_eleccion FROM public.elecciones WHERE ano = '2014'
) AS e ON true;
-- UD
INSERT INTO public.candidatos (id_partido, id_tipo_partido, id_eleccion, id_dpa, presidente, vice_presidente)
SELECT p.id_partido, p.id_tipo_partido, e.id_eleccion, 1, p.p, p.vp
FROM (
  SELECT id_partido, id_tipo_partido, 'Samuel Jorge Doria Medina Auza' AS p, 'Ernesto Suarez Sattori' AS vp FROM public.partidos WHERE sigla = 'UD'
) AS p
JOIN (
  SELECT id_eleccion FROM public.elecciones WHERE ano = '2014'
) AS e ON true;

-- pseudo partidos
INSERT INTO public.candidatos (id_partido, id_tipo_partido, id_eleccion, id_dpa, presidente, vice_presidente)
SELECT p.id_partido, p.id_tipo_partido, e.id_eleccion, 1, p.p, p.vp
FROM (
  SELECT id_partido, id_tipo_partido, '' AS p, '' AS vp FROM public.partidos WHERE sigla IN ('BLANCOS','NULOS','ABSTENCION','VALIDOS','EMITIDOS','INSCRITOS')
) AS p
JOIN (
  SELECT id_eleccion FROM public.elecciones WHERE ano = '2014'
) AS e ON true;

-- Verificación

SELECT c.* FROM public.candidatos AS c
  JOIN public.elecciones AS e USING ("id_eleccion")
  WHERE e.ano=2014;
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123

-------------------------------------------
-- Paso 4 - creación de la función de inserción de un resultado
-------------------------------------------

-- Function: public.f_insert_resultado_2014_plurinacional_votos(integer, integer, integer)
-- entradas:
--  * id_partido
--  * id_dpa
--  * resultado
CREATE OR REPLACE FUNCTION public.f_insert_resultado_2014_plurinacional_votos(
    _id_partido integer
  , _id_dpa integer
  , _resultado integer) RETURNS int
AS $$
  DECLARE
    id_val int;
  BEGIN
124 125 126 127 128 129 130 131 132 133

  DELETE FROM public.resultados
    WHERE id_resultado IN (
      SELECT id_resultado
      FROM public.resultados AS r
      JOIN (
        SELECT id_eleccion FROM public.elecciones WHERE ano = 2014 AND id_tipo_eleccion=1
      ) AS e ON (r.id_eleccion = e.id_eleccion)
      JOIN (
        SELECT id_eleccion, id_candidato, id_partido, id_tipo_partido FROM public.candidatos WHERE id_partido=_id_partido
Sylvain Lesage's avatar
Sylvain Lesage committed
134
      ) AS c ON (c.id_eleccion=e.id_eleccion AND r.id_candidato=c.id_candidato)
135 136
      JOIN (
        SELECT id_dpa, id_tipo_dpa FROM public.dpa WHERE id_dpa=_id_dpa
Sylvain Lesage's avatar
Sylvain Lesage committed
137
      ) AS d ON r.id_dpa=d.id_dpa);
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
  
  INSERT INTO public.resultados (id_eleccion, id_candidato, id_partido, id_tipo_partido, id_dpa, id_tipo_dpa, id_tipo_resultado, resultado)
    SELECT e.id_eleccion, c.id_candidato, c.id_partido, c.id_tipo_partido, d.id_dpa, d.id_tipo_dpa, 1, _resultado
    FROM (
      SELECT id_eleccion FROM public.elecciones WHERE ano = 2014 AND id_tipo_eleccion=1
    ) AS e
    JOIN (
      SELECT id_eleccion, id_candidato, id_partido, id_tipo_partido FROM public.candidatos WHERE id_partido=_id_partido
    ) AS c ON (c.id_eleccion=e.id_eleccion)
    JOIN (
      SELECT id_dpa, id_tipo_dpa FROM public.dpa WHERE id_dpa=_id_dpa
    ) AS d ON true
  RETURNING id_resultado INTO id_val;

  RETURN id_val;

  END;
$$
LANGUAGE plpgsql;