El presente documento contiene el código fuente de SQL utilizado para la consulta de datos a la base sobre financiamiento electoral privado a partidos políticos en Costa Rica, en el periodo setiembre 2009- diciembre 2018, del Tribunal Supremo de Elecciones, para la elaboración del artículo: Grandes donantes dinero, élites y partidos políticos en Costa Rica (2010-2018)

#install.packages("odbc")
#install.packages("DBI")
library(odbc)
library(DBI)
library(readxl)
library(tidyverse)
# instalar los siguientes paquetes para ejecutar código SQL en EL ENTORNO DE RStudio.

Importar los datos, del excel BBDD_Financiamiento Privado del TSE.

BBDD <- read_excel(“C:rutadelarchivo.xlsx”)

#create database

con <- dbConnect(drv = RSQLite::SQLite(),
                 dbname = ":memory:")
 
#store sample data in database
dbWriteTable(conn = con, 
             name = "BBDD",
             value = BBDD)

 
#remove the local data from the environment
#rm(BBDD)

Montos totales recibidos por partido político en el periodo: setiembre 2009 a diciembre 2018.

Código SQL

SELECT -- (SELECT MANDATORIO) consulte la columna partido político del subquery A
 A.[PARTIDO POLÍTICO]
 ,SUM(A.MONTO) AS SumaColones -- sume todos los montos y llamelo SumaColones
 ,(SUM(A.MONTO) /534.32) AS dolarizado -- para dolarizar, a la suma de esos montos dividala por el tipo de cambio promerio para ese periodo
FROM -- haga la consulta al siguiente conjunto de datos (desde)
    (
    SELECT -- las columnas [PARTIDO POLÍTICO] y ,MONTO
    [PARTIDO POLÍTICO]
    ,MONTO
    FROM --desde la tabla DBO.BBDD
    BBDD
    WHERE -- donde la variable [PARTIDO POLÍTICO] sea igual a 'LIBERACION NACIONAL' o a  'UNIDAD SOCIAL CRISTIANA'...
        [PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
        OR [PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
        OR [PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
        OR [PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
        OR [PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
        OR [PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL' 
) AS A -- este conjunto de datos que excluye  a todos los otros partidos llamele subquery A
    
GROUP BY
    A.[PARTIDO POLÍTICO] -- me agrupa el resultado del SELECT MANDATORIO por partido político
ORDER BY 
    SUM(A.MONTO) ASC
6 records
PARTIDO POLÍTICO SumaColones dolarizado
RESTAURACION NACIONAL 155947532 291861.7
UNIDAD SOCIAL CRISTIANA 536042420 1003223.6
FRENTE AMPLIO 543324097 1016851.5
MOVIMIENTO LIBERTARIO 691121149 1293459.3
ACCION CIUDADANA 833463173 1559857.7
LIBERACION NACIONAL 4857523062 9091037.3

Costa Rica: top mayores donantes al PLN.

Montos recibidos entre setiembre 2009 y diciembre 2018.

Código SQL

SELECT --TOP 30
A.[PARTIDO POLÍTICO] 
 , A.Suma AS colones
 , (A.Suma /534.32) AS dolarizado 
FROM --desde subquery A (conjunto de datos unicamente con los partidos de interés)
    (
    SELECT
    [PARTIDO POLÍTICO]
    ,[CÉDULA]
    , MONTO
    , ROW_NUMBER () OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA ASC) AS Secuenciaultima --Asigne una secuencia numerica a cada grupo particionado por cedula
    , SUM(MONTO) OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA DESC) AS Suma -- sume todos los montos por cedula y ordene segun la fecha del monto
    FROM BBDD -- desde tabla BBDD
    WHERE -- donde [PARTIDO POLÍTICO] sea igual a los siguientes partidos
        [PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
        OR [PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
        OR [PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
        OR [PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
        OR [PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
        OR [PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL' 
) AS A -- llamele al conjunto de datos A

WHERE -- que el resultado del select mandatorio sea igual unicamente a Liberacin Nacional
    A.[PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
    AND A.SecuenciaUltima = 1 -- y de la secuencia muestre el valor 1 (para sacar el máximo de la suma de todos los montos)
ORDER BY A.Suma DESC -- ordene el resultado del select mandatorio según la suma de forma descendenete para obtener el mayor monto
Displaying records 1 - 10
PARTIDO POLÍTICO colones dolarizado
LIBERACION NACIONAL 931301810 1742966.4
LIBERACION NACIONAL 366176024 685312.2
LIBERACION NACIONAL 149678564 280129.1
LIBERACION NACIONAL 142550875 266789.3
LIBERACION NACIONAL 82683207 154744.7
LIBERACION NACIONAL 78784000 147447.2
LIBERACION NACIONAL 58132000 108796.2
LIBERACION NACIONAL 56480000 105704.4
LIBERACION NACIONAL 55361000 103610.2
LIBERACION NACIONAL 55300000 103496.0

Costa Rica: top mayores donantes al PAC.

Montos recibidos entre setiembre 2009 y diciembre 2018.

Código SQL

SELECT --TOP 30
A.[PARTIDO POLÍTICO]
 , A.Suma AS Colones
 ,(A.Suma /534.32) AS dolarizado
FROM
    (
    SELECT
    [PARTIDO POLÍTICO]
    ,[CÉDULA]
    , MONTO
    , ROW_NUMBER () OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA ASC) AS Secuenciaultima
    , SUM(MONTO) OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA DESC) AS Suma
    FROM BBDD
    WHERE
        [PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
        OR [PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
        OR [PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
        OR [PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
        OR [PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
        OR [PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL' 
) AS A

WHERE 
    A.[PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
    AND A.SecuenciaUltima = 1
ORDER BY A.Suma DESC
Displaying records 1 - 10
PARTIDO POLÍTICO Colones dolarizado
ACCION CIUDADANA 217385000 406844.21
ACCION CIUDADANA 13024224 24375.33
ACCION CIUDADANA 11497055 21517.17
ACCION CIUDADANA 11030331 20643.68
ACCION CIUDADANA 10066650 18840.11
ACCION CIUDADANA 8230039 15402.83
ACCION CIUDADANA 7937614 14855.54
ACCION CIUDADANA 7893019 14772.08
ACCION CIUDADANA 7691170 14394.31
ACCION CIUDADANA 7685129 14383.01

Costa Rica: top mayores donantes al PUSC.

Montos recibidos entre setiembre 2009 y diciembre 2018. Para este partido como se trabajó con personas físicas y el segundo lugar correspondió a una persona jurpidica, se toma el top 31 para excluir la personería jurpidica en el análisis final.

Código SQL

SELECT --TOP 30
A.[PARTIDO POLÍTICO]
 , A.Suma AS Colones
 ,(A.Suma /534.32) AS dolarizado
FROM
    (
    SELECT
    [PARTIDO POLÍTICO]
    ,[CÉDULA]
    , MONTO
    , ROW_NUMBER () OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA ASC) AS Secuenciaultima
    , SUM(MONTO) OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA DESC) AS Suma
    FROM BBDD
    WHERE
        [PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
        OR [PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
        OR [PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
        OR [PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
        OR [PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
        OR [PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL' 
) AS A

WHERE 
    A.[PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
    AND A.SecuenciaUltima = 1
ORDER BY A.Suma DESC
Displaying records 1 - 10
PARTIDO POLÍTICO Colones dolarizado
UNIDAD SOCIAL CRISTIANA 73398137 137367.38
UNIDAD SOCIAL CRISTIANA 47736527 89340.71
UNIDAD SOCIAL CRISTIANA 35240000 65952.99
UNIDAD SOCIAL CRISTIANA 31600000 59140.59
UNIDAD SOCIAL CRISTIANA 22439000 41995.43
UNIDAD SOCIAL CRISTIANA 18502800 34628.69
UNIDAD SOCIAL CRISTIANA 16807796 31456.42
UNIDAD SOCIAL CRISTIANA 8879321 16617.98
UNIDAD SOCIAL CRISTIANA 8321667 15574.31
UNIDAD SOCIAL CRISTIANA 8197000 15340.99

Costa Rica: top mayores donantes al ML.

Montos recibidos entre setiembre 2009 y diciembre 2018.

Código SQL

SELECT --TOP 30
A.[PARTIDO POLÍTICO]
 , A.Suma AS Colones
 ,(A.Suma /534.32) AS dolarizado
FROM
    (
    SELECT
    [PARTIDO POLÍTICO]
    ,[CÉDULA]
    , MONTO
    , ROW_NUMBER () OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA ASC) AS Secuenciaultima
    , SUM(MONTO) OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA DESC) AS Suma
    FROM BBDD
    WHERE
        [PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
        OR [PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
        OR [PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
        OR [PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
        OR [PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
        OR [PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL' 
) AS A

WHERE 
    A.[PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
    AND A.SecuenciaUltima = 1
ORDER BY A.Suma DESC
Displaying records 1 - 10
PARTIDO POLÍTICO Colones dolarizado
MOVIMIENTO LIBERTARIO 75265993 140863.14
MOVIMIENTO LIBERTARIO 37047964 69336.66
MOVIMIENTO LIBERTARIO 28050000 52496.63
MOVIMIENTO LIBERTARIO 25830600 48342.94
MOVIMIENTO LIBERTARIO 20837780 38998.69
MOVIMIENTO LIBERTARIO 16330000 30562.21
MOVIMIENTO LIBERTARIO 12650000 23674.95
MOVIMIENTO LIBERTARIO 9520000 17817.04
MOVIMIENTO LIBERTARIO 8495000 15898.71
MOVIMIENTO LIBERTARIO 7676700 14367.23

Costa Rica: top mayores donantes al FA.

Montos recibidos entre setiembre 2009 y diciembre 2018.

Código SQL

SELECT --TOP 30
A.[PARTIDO POLÍTICO]
 , A.Suma AS Colones
 ,(A.Suma /534.32) AS dolarizado
FROM
    (
    SELECT
    [PARTIDO POLÍTICO]
    ,[CÉDULA]
    , MONTO
    , ROW_NUMBER () OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA ASC) AS Secuenciaultima
    , SUM(MONTO) OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA DESC) AS Suma
    FROM BBDD
    WHERE
        [PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
        OR [PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
        OR [PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
        OR [PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
        OR [PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
        OR [PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL' 
) AS A

WHERE 
    A.[PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
    AND A.SecuenciaUltima = 1
ORDER BY A.Suma DESC
Displaying records 1 - 10
PARTIDO POLÍTICO Colones dolarizado
FRENTE AMPLIO 53609000 100331.26
FRENTE AMPLIO 45245578 84678.80
FRENTE AMPLIO 33248050 62224.98
FRENTE AMPLIO 27445600 51365.47
FRENTE AMPLIO 26008500 48675.89
FRENTE AMPLIO 25234062 47226.50
FRENTE AMPLIO 25000000 46788.44
FRENTE AMPLIO 24361000 45592.53
FRENTE AMPLIO 21958500 41096.16
FRENTE AMPLIO 21675000 40565.58

Costa Rica: top mayores donantes al PRN.

Montos recibidos entre setiembre 2009 y diciembre 2018.

Código SQL

SELECT --TOP 30
A.[PARTIDO POLÍTICO]
 , A.Suma AS Colones
 ,(A.Suma /534.32) AS dolarizado
FROM
    (
    SELECT
    [PARTIDO POLÍTICO]
    ,[CÉDULA]
    , MONTO
    , ROW_NUMBER () OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA ASC) AS Secuenciaultima
    , SUM(MONTO) OVER (PARTITION BY [CÉDULA] ORDER BY  FECHA DESC) AS Suma
    FROM BBDD
    WHERE
        [PARTIDO POLÍTICO] = 'LIBERACION NACIONAL'
        OR [PARTIDO POLÍTICO] = 'UNIDAD SOCIAL CRISTIANA'
        OR [PARTIDO POLÍTICO] = 'ACCION CIUDADANA'
        OR [PARTIDO POLÍTICO] = 'MOVIMIENTO LIBERTARIO'
        OR [PARTIDO POLÍTICO] = 'FRENTE AMPLIO'
        OR [PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL' 
) AS A

WHERE 
    A.[PARTIDO POLÍTICO] = 'RESTAURACION NACIONAL'
    AND A.SecuenciaUltima = 1
ORDER BY A.Suma DESC
Displaying records 1 - 10
PARTIDO POLÍTICO Colones dolarizado
RESTAURACION NACIONAL 11728900 21951.078
RESTAURACION NACIONAL 11677415 21854.721
RESTAURACION NACIONAL 10200000 19089.684
RESTAURACION NACIONAL 9736525 18222.273
RESTAURACION NACIONAL 9733000 18215.676
RESTAURACION NACIONAL 9625000 18013.550
RESTAURACION NACIONAL 4720576 8834.736
RESTAURACION NACIONAL 4550000 8515.496
RESTAURACION NACIONAL 4500000 8421.919
RESTAURACION NACIONAL 3850000 7205.420

Donantes a más de un partido político

Para obtener el top 10, dado que algunas cédulas estaban registradas con 0, (INCONSISTENT) estas se posicionan en la primera poscisión y se toma los siguientes 10 contribuyentes con 3 o más partidos distintos.

Código SQL

SELECT -- consulte la cedula y el nombre y haga un conteo distinto de los partidos politicos
    [CÉDULA]
    ,COUNT(DISTINCT [PARTIDO POLÍTICO]) AS CONTEOPARTIDODISTINTO
FROM -- desde la tabla 
    BBDD
WHERE 
    [ESCALA] = 'NACIONAL' -- solo partidos de escala nacional
GROUP BY -- agrupelo por cedula y por nombre
    [CÉDULA]
ORDER BY -- ordene la consulta por el resultado del conteo distinto de forma descendente para obtener a quien tenga más partidos distintos.
COUNT(DISTINCT [PARTIDO POLÍTICO]) DESC
Displaying records 1 - 10
CÉDULA CONTEOPARTIDODISTINTO
0 7
104620192 6
900420144 4
900610047 3
900400076 3
601150376 3
109780599 3
107580258 3
106440138 3
104750144 3