#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