Está en la página 1de 8

Teniendo en cuenta, el siguiente Modelo Entidad Relación.

1. Generar un informe anual, en el que se evidencie con periodicidad mensual el saldo de cada producto
y su porcentaje de participación

2. Se desea conocer de los clientes multiproducto, con saldo saldo capital consolidado mayor a 30
millones de pesos, su nombre, el Total de Obligaciones, y el valor de la mínima obligación y el valor
de la máxima obligación donde es deudor.

SELECT CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI) "NOMBRE" ,


COUNT(ID_OBLIGACION) "TOTAL OBLIGACIONES", MIN(SALDO_CAPITAL) "MÍNIMA
OBLIGACIÓN",
(
SELECT MAX(SALDO_CAPITAL) AS TEST3TR FROM RELA_CLI_OBLI
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
WHERE RELA_ID_CLIENTE = ID_CLIENTE
AND RELA_ID_TIPO_CLIENTE = 1
) "MÁXIMA OBLIGACIÓN DEUDOR"
FROM CLIENTES
INNER JOIN RELA_CLI_OBLI ON ID_CLIENTE = RELA_ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
GROUP BY NOMBRES_CLI, CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI),
APELLIDOS_CLI, ID_CLIENTE
HAVING COUNT(RELA_ID_OBLIGACION) > 1 AND SUM(SALDO_CAPITAL) > 30000000
3. Se desea conocer por ciclo de mora el porcentaje de participación en Saldo Capital, de toda la cartera
del banco.

Ciclo 1 1 - 30
Ciclo 2 31-60
Ciclo 3 61 – 90
Ciclo 4 91 – 120
Ciclo 5 121 – 150
Ciclo 6 151 – 180
Ciclo 7 mayor a 180

SELECT CICLO, COUNT(*) * 100 / (SELECT COUNT(*) FROM OBLIGACIONES) PORCENTAJE


FROM (
SELECT
(CASE WHEN DIAS_MORA BETWEEN 1 AND 30 THEN 'CICLO 1'
WHEN DIAS_MORA BETWEEN 31 AND 60 THEN 'CICLO 2'
WHEN DIAS_MORA BETWEEN 61 AND 90 THEN 'CICLO 3'
WHEN DIAS_MORA BETWEEN 91 AND 120 THEN 'CICLO 4'
WHEN DIAS_MORA BETWEEN 121 AND 150 THEN 'CICLO 5'
WHEN DIAS_MORA BETWEEN 151 AND 180 THEN 'CICLO 6'
ELSE 'CICLO 7' END) CICLO FROM OBLIGACIONES
) TEMP
GROUP BY TEMP.CICLO
ORDER BY TEMP.CICLO
4. Se desea conocer por cliente el total de obligaciones que tiene de cada producto

SELECT CONCAT(CONCAT(NOMBRES_CLI, ' '), APELLIDOS_CLI) "NOMBRE CLIENTE", COUNT(*)


CANTIDAD, DESCRIP_PRODUCTO PRODUCTO FROM RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON ID_PRODUCTO = OBLI_ID_PRODUCTO
GROUP BY NOMBRES_CLI, CONCAT(CONCAT(NOMBRES_CLI, ' '), APELLIDOS_CLI),
APELLIDOS_CLI, DESCRIP_PRODUCTO
ORDER BY CONCAT(CONCAT(NOMBRES_CLI, ' '), APELLIDOS_CLI), DESCRIP_PRODUCTO

5. Se desea conocer los clientes de tipo Deudor, que tienen tarjeta de credito pero no tienen creditos
hipotecarios (utilizar una consulta escalar (subquery), minus y/o Exists)

SELECT CONCAT(CONCAT(NOMBRES_CLI, ' '), APELLIDOS_CLI) "NOMBRE CLIENTE" FROM


RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON OBLI_ID_PRODUCTO = ID_PRODUCTO
WHERE RELA_ID_TIPO_CLIENTE = 1
AND OBLI_ID_PRODUCTO = 1 AND OBLI_ID_PRODUCTO != 4
GROUP BY NOMBRES_CLI, APELLIDOS_CLI
6. Se desea conocer los clientes que tienen obligaciones TC, que su saldo capital supera el valor
promedio de este producto Generar un informe por cliente, en el que se evidencie el porcentaje de
participación del saldo sobre el total de la cartera

SELECT CONCAT(CONCAT(NOMBRES_CLI, ' ') , APELLIDOS_CLI) NOMBRE, SALDO_CAPITAL *


100 / (SELECT SUM(SALDO_CAPITAL) FROM OBLIGACIONES
INNER JOIN RELA_CLI_OBLI ON RELA_ID_OBLIGACION = ID_OBLIGACION ) "PORCENTAJE
PARTICIPACIÓN" FROM RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON OBLI_ID_PRODUCTO = ID_PRODUCTO
INNER JOIN (SELECT OBLI_ID_PRODUCTO, (SUM(SALDO_CAPITAL) / (SELECT COUNT(*) FROM
OBLIGACIONES WHERE OBLI_ID_PRODUCTO = ID_PRODUCTO)) PROMEDIO FROM
PRODUCTO
INNER JOIN OBLIGACIONES ON OBLI_ID_PRODUCTO = ID_PRODUCTO
WHERE OBLI_ID_PRODUCTO = 1
GROUP BY ID_PRODUCTO, OBLI_ID_PRODUCTO) PRODUCTO_PROMEDIO
ON PRODUCTO_PROMEDIO.OBLI_ID_PRODUCTO = OBLIGACIONES.OBLI_ID_PRODUCTO
WHERE ID_PRODUCTO = 1
GROUP BY NOMBRES_CLI, APELLIDOS_CLI, SALDO_CAPITAL, PROMEDIO
HAVING OBLIGACIONES.SALDO_CAPITAL > PRODUCTO_PROMEDIO.PROMEDIO

7. Generar un informe por cliente, en el que se evidencie el porcentaje de participación del saldo sobre el
total de la cartera.

SELECT CONCAT(CONCAT(NOMBRES_CLI, ' '), APELLIDOS_CLI) "NOMBRE CLIENTE" ,


SUM(SALDO_CAPITAL) "SALDO",
SUM(SALDO_CAPITAL) * 100 / (SELECT SUM(SALDO_CAPITAL) FROM OBLIGACIONES INNER
JOIN RELA_CLI_OBLI ON RELA_ID_OBLIGACION = ID_OBLIGACION ) "PORCENTAJE
PARTICIPACIÓN"
FROM RELA_CLI_OBLI
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON OBLI_ID_PRODUCTO = ID_PRODUCTO
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
GROUP BY NOMBRES_CLI, APELLIDOS_CLI
8. Hacer un informe en el cual se evidencien los clientes que son codeudores de obligaciones de Libre
inversión, con un saldo a capital menor a un salario mínimo legal vigente.

SELECT CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI) "NOMBRE", SALDO_CAPITAL


SALDO, DESCRIP_PRODUCTO PRODUCTO FROM RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON ID_PRODUCTO = OBLI_ID_PRODUCTO
WHERE RELA_ID_TIPO_CLIENTE = 2 AND OBLI_ID_PRODUCTO = 5 AND SALDO_CAPITAL <
828116

9. Indicar cuantas obligaciones y cuantos clientes hay por tipo de producto.

SELECT DESCRIP_PRODUCTO, COUNT(ID_OBLIGACION) "NUMERO OBLIGACIONES",


COUNT(RELA_ID_CLIENTE) "NUMERO CLIENTES" FROM OBLIGACIONES
INNER JOIN RELA_CLI_OBLI ON ID_OBLIGACION = RELA_ID_OBLIGACION
INNER JOIN PRODUCTO ON ID_PRODUCTO = OBLI_ID_PRODUCTO
GROUP BY DESCRIP_PRODUCTO
10. Se requiere conocer los clientes menores a 25 años, que tienen una tarjeta de crédito y tienen más de
30 días de mora, para realizar un proceso masivo de bloqueo de TC.

SELECT CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI) "NOMBRE" FROM


RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON ID_PRODUCTO = OBLI_ID_PRODUCTO
WHERE EDAD_CLI<25 AND ID_PRODUCTO = 1 AND DIAS_MORA > 30

11. Listar los clientes que sean deudores de más de 2 obligaciones.

SELECT CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI) "NOMBRE" FROM


RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON ID_PRODUCTO = OBLI_ID_PRODUCTO
WHERE RELA_ID_TIPO_CLIENTE = 1
GROUP BY NOMBRES_CLI, APELLIDOS_CLI
HAVING COUNT(*)>2

12. Listar los clientes que sean codeudores de más de 3 obligaciones.

SELECT CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI) "NOMBRE" FROM


RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON ID_PRODUCTO = OBLI_ID_PRODUCTO
WHERE RELA_ID_TIPO_CLIENTE = 1
GROUP BY NOMBRES_CLI, APELLIDOS_CLI
HAVING COUNT(*)>3
13. Calcule el valor promedio del saldo a capital por tipo de producto

14. Se desea conocer los clientes multiproducto (deudores con más de una obligación), que el máximo
“días de mora” de todas sus obligaciones su encuentre entre 30 y 60 días de mora.

SELECT CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI) "NOMBRE" ,


COUNT(ID_OBLIGACION) "TOTAL OBLIGACIONES",
(
SELECT MAX(DIAS_MORA) AS TEST3TR FROM RELA_CLI_OBLI
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
WHERE RELA_ID_CLIENTE = ID_CLIENTE
AND RELA_ID_TIPO_CLIENTE = 1
) "DIAS MORA"
FROM CLIENTES
INNER JOIN RELA_CLI_OBLI ON ID_CLIENTE = RELA_ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
GROUP BY NOMBRES_CLI, CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI),
APELLIDOS_CLI, ID_CLIENTE
HAVING COUNT(RELA_ID_OBLIGACION) > 1 AND SUM(DIAS_MORA) BETWEEN 30 AND 60

15. Se desea conocer todos los clientes que tienen un producto Tarjeta de Crédito y que solo muestre el
saldo a capital de aquellos que tengan una mora mayor a 30 días de mora. Organizar el saldo capital
ascendentemente

SELECT CONCAT(CONCAT(NOMBRES_CLI , ' ') , APELLIDOS_CLI) "NOMBRE",SALDO_CAPITAL


"SALDO",
(
SELECT MAX(DIAS_MORA) AS TEST3TR FROM RELA_CLI_OBLI
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
WHERE RELA_ID_CLIENTE = ID_CLIENTE
AND RELA_ID_TIPO_CLIENTE = 1
) "DIAS MORA"
FROM RELA_CLI_OBLI
INNER JOIN CLIENTES ON RELA_ID_CLIENTE = ID_CLIENTE
INNER JOIN OBLIGACIONES ON RELA_ID_OBLIGACION = ID_OBLIGACION
INNER JOIN PRODUCTO ON ID_PRODUCTO = OBLI_ID_PRODUCTO
WHERE ID_PRODUCTO = 1 AND DIAS_MORA > 30

También podría gustarte