#instalar libreria deseada 
#install.packages('sqldf')
library (sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite

Cargamos la informacion de nuestras bases:

#Definir directorio
setwd("G:/TRABAJO/DOCENCIA/KONRAND LORENZ")
#Cargar las bases de datos de interes
nomina=read.csv2("BDD_NOMINA.csv", header = TRUE, sep = ";", dec=",")
perfil=read.csv2("BDD_PERFIL.csv", header = TRUE, sep = ";", dec=",")
head(nomina,10)
##    TIPO_ID_CLIENTE ID_CLIENTE Ingreso meses_contrato
## 1                C       9604 1500000             18
## 2                C      28898 3000000             30
## 3                C      23331 2250000             24
## 4                C      31254 4000000             30
## 5                C      15325 3000000             19
## 6                C      36554 3704938             18
## 7                C      28224 4500000             30
## 8                C      29126 4000000             24
## 9                C      15464 2000000             12
## 10               C       1016 2000000             18
head(perfil,10)
##    TIPO_ID_CLIENTE ID_CLIENTE CLSEXO CLESTADO_CIVIL EDAD_ANOS CLNIVEL_EDUCATIVO
## 1                C       9604      F         CASADO        44          PRIMARIA
## 2                C      28898      F    UNION LIBRE        22     UNIVERSITARIO
## 3                C      23331      M         CASADO        41      BACHILLERATO
## 4                C      31254      F    UNION LIBRE        32           TECNICO
## 5                C      15325      F    UNION LIBRE        40           TECNICO
## 6                C      36554      M    UNION LIBRE        27      BACHILLERATO
## 7                C      28224      M        SOLTERO        24      BACHILLERATO
## 8                C      29126      M    UNION LIBRE        21     UNIVERSITARIO
## 9                C      15464      F     DIVORCIADO        40          PRIMARIA
## 10               C       1016      M         CASADO        52          PRIMARIA
##    CLTIPO_VIVIENDA CIUDAD_AGRUPADA
## 1           PROPIA          BOGOTA
## 2         FAMILIAR          BOGOTA
## 3        ARRENDADA          BOGOTA
## 4         FAMILIAR          BOGOTA
## 5           PROPIA        MEDELLIN
## 6         FAMILIAR          BOGOTA
## 7         FAMILIAR          BOGOTA
## 8           PROPIA          BOGOTA
## 9         FAMILIAR          BOGOTA
## 10        FAMILIAR          BOGOTA
#consulta
q1=sqldf('
SELECT TIPO_ID_CLIENTE,ID_CLIENTE
FROM nomina
WHERE meses_contrato >= 24
')
head(q1,5)
##   TIPO_ID_CLIENTE ID_CLIENTE
## 1               C      28898
## 2               C      23331
## 3               C      31254
## 4               C      28224
## 5               C      29126
#Funciones de agregacion
q2=sqldf('
SELECT COUNT (ID_CLIENTE) as empleados,
       AVG(ingreso) as avg_ingreso,
       SUM(ingreso) as sum_ingreso
FROM nomina
')
q2
##   empleados avg_ingreso sum_ingreso
## 1      5466     7615452 41626059167
#Funciones de agregacion
q3=sqldf('
SELECT  CLSEXO,
        COUNT (ID_CLIENTE) as empleado,
        MIN(EDAD_ANOS) as min_edad,
        AVG(EDAD_ANOS) as avg_edad,
        MAX(EDAD_ANOS) as max_edad
FROM perfil
GROUP BY CLSEXO
')
q3
##   CLSEXO empleado min_edad avg_edad max_edad
## 1      F     2909       18 43.58577       77
## 2      M     2557       18 43.43684       77
#Condiciones
q4=sqldf('
SELECT  TIPO_ID_CLIENTE, ID_CLIENTE,
        CASE 
        WHEN (EDAD_ANOS) BETWEEN 18 AND 30 THEN "18 a 30"
        WHEN (EDAD_ANOS) BETWEEN 31 AND 50 THEN "31 a 50"
        WHEN (EDAD_ANOS) >= 51 THEN "mayor a 51"
        ELSE "sin edad" end rango_edad
FROM perfil
')
head(q4,5)
##   TIPO_ID_CLIENTE ID_CLIENTE rango_edad
## 1               C       9604    31 a 50
## 2               C      28898    18 a 30
## 3               C      23331    31 a 50
## 4               C      31254    31 a 50
## 5               C      15325    31 a 50
#Consultas agregadas
q5=sqldf('
SELECT  RANGO_EDAD, COUNT(ID_CLIENTE) as EMPLEADOS
FROM(
SELECT  TIPO_ID_CLIENTE, ID_CLIENTE,
        CASE 
        WHEN (EDAD_ANOS) BETWEEN 18 AND 30 THEN "18 a 30"
        WHEN (EDAD_ANOS) BETWEEN 31 AND 50 THEN "31 a 50"
        WHEN (EDAD_ANOS) >= 51 THEN "mayor a 51"
        ELSE "sin edad" end rango_edad
FROM perfil)
GROUP BY RANGO_EDAD
')
q5
##   rango_edad EMPLEADOS
## 1    18 a 30      1228
## 2    31 a 50      2334
## 3 mayor a 51      1904
#Join
q6=sqldf('
SELECT *
FROM
(
SELECT b.CIUDAD_AGRUPADA, b.CLNIVEL_EDUCATIVO, AVG(a.Ingreso) as avg_Ingreso
FROM nomina               a
INNER JOIN perfil         b
ON a.ID_CLIENTE=b.ID_CLIENTE
WHERE a.TIPO_ID_CLIENTE="C" 
and b.CIUDAD_AGRUPADA="BOGOTA"
GROUP BY b.CIUDAD_AGRUPADA,b.CLNIVEL_EDUCATIVO)
ORDER BY avg_Ingreso asc
')
q6
##   CIUDAD_AGRUPADA CLNIVEL_EDUCATIVO avg_Ingreso
## 1          BOGOTA           NINGUNO     4083082
## 2          BOGOTA       TECNOLOGICO     5179568
## 3          BOGOTA          PRIMARIA     5539014
## 4          BOGOTA      BACHILLERATO     6198397
## 5          BOGOTA           TECNICO     7857149
## 6          BOGOTA     UNIVERSITARIO    11651785
## 7          BOGOTA         POSTGRADO    13161726