create database FedePoli_Ej5;

Use FedePoli_Ej5;
----- Ej5 -------------
create table clientes(
	cod_cliente int primary key,
	tipo_nro_doc nvarchar(50),
	nom_apellido nvarchar(100),
	domicilio nvarchar(100),
	tel_particular_cli nvarchar(100),
	tel_celular_cli nvarchar(100),
	fecha_nac date
);

create table estados(
	cod_estado int primary key,
	desc_estado nvarchar(100)
)

create table juzgados(
	cod_juzgado int primary key,
	nombre_juez nvarchar(100),
	secretario nvarchar(100),
	tel_juzgado nvarchar(100),
);

create table tipos_juicios(
	cod_juicio int primary key,
	desc_juicio nvarchar(100)
);

create table expedientes (
	cod_expediente int primary key,	
	fecha_inicio date,
	caratula nvarchar(100),
	cod_estado int foreign key references estados(cod_estado),
	cod_juicio int foreign key references tipos_juicios(cod_juicio),
	cod_juzgado int foreign key references juzgados(cod_juzgado)
)

create table clientes_expedientes(
	cod_expediente int foreign key references expedientes(cod_expediente),
	cod_cliente int foreign key references clientes(cod_cliente),
	tipo_demanda nvarchar(50),
	primary key(cod_expediente,cod_cliente)
)
----- fin Ej5 ---------

----- Comienzo Actividad Sincronica IV -----
--- 1. Carga de datos ---
-- cargo a tabla clientes -- 
INSERT INTO clientes values (1, '45265923', 'Federico Polidoro', 'Laprida 120', '3414636311','3413896906', '2001-12-23');
INSERT INTO clientes values (2, '48367945', 'Nicolas Nicoletti', 'Lagos 6000',  '4636363221', '0015525987', '1999-08-23');
INSERT INTO clientes values (3, '48367945', 'Juan Martin', 'Lagos 6200',  '4626363221', '1015525987', '1999-01-23');
INSERT INTO clientes values (4, '48367945', 'Alejandro Martin', 'Lagos 5700',  '461263221', '525987', '1997-01-23');

-- cargo tabla estado --
INSERT INTO estados values (1, 'Pausado');
INSERT INTO estados values (2, 'En Revision');
INSERT INTO estados values (3, 'Rechazado');

-- cargo tabla juzgados -- 
INSERT INTO juzgados values (1, 'Juan', 'Felipe',   126598242);
INSERT INTO juzgados values (2, 'Sergio', 'Javier', 456345233);
INSERT INTO juzgados values (3, 'Patricio', 'Cristian', 4562345233);

-- cargo tabla tipos_juicios --
INSERT INTO tipos_juicios values (1, 'Alimentos');
INSERT INTO tipos_juicios values (2, 'Penal');
INSERT INTO tipos_juicios values (3, 'Comercial');

-- cargo tabla expedientes -- 
INSERT INTO expedientes values (1, '2020-12-24', 'Caso 2131, homicidio multiple', 2, 2, 2);
INSERT INTO expedientes values (2, '2023-02-12', 'Juicio de alimentos aldosivi', 3, 1, 1);
INSERT INTO expedientes values (3, '2024-02-12', 'Juicio de alimentos Ferrara', 1, 1, 1);
INSERT INTO expedientes values (4, '2024-02-12', 'Secuestro', 3, 2, 3);
INSERT INTO expedientes values (5, '2024-02-12', 'Contrabando de ositos de peluche', 3, 2, 3);


-- cargo tabla cli-exp -- 
INSERT INTO clientes_expedientes values (1, 1, 'demandado');
INSERT INTO clientes_expedientes values (2, 2, 'demandante');

--- 2. Mostrar codcliente, nombre, apellido y domicilio con fecha de nacimiento anterior al año 2000 ordenado alfabeticamente ---
SELECT cod_cliente,nom_apellido,domicilio FROM clientes c WHERE c.fecha_nac < '2000-01-01' ORDER BY c.nom_apellido; 

--- 3. MOSTRAR TODOS LOS EXPEDIENTES DEL JUZGADO 2 ---
SELECT * FROM expedientes e WHERE e.cod_juzgado = 2;

--- 4. DADO UN EXPEDIENTE, MOSTRAR SU ESTADO, NOMBRE DEL JUEZ Y NOMRE DEL CLIENTE ---
SELECT et.desc_estado, j.nombre_juez, c.nom_apellido FROM expedientes e 
	JOIN  estados et ON e.cod_estado = et.cod_estado 
	JOIN juzgados j ON j.cod_juzgado = e.cod_juzgado
	JOIN clientes_expedientes ce ON ce.cod_expediente = e.cod_expediente 
	JOIN clientes c ON ce.cod_cliente = c.cod_cliente
WHERE e.cod_expediente = 1;

--- 5. Cuantos expedientes hay por juzgado
SELECT j.cod_juzgado, j.nombre_juez, COUNT(e.cod_expediente) FROM expedientes e 
	JOIN juzgados j ON e.cod_juzgado = j.cod_juzgado
GROUP BY j.cod_juzgado, j.nombre_juez;



--- 6. CUAL ES EL JUZGADO QUE MAS EXPEDIENTES TIENE, CONTEMPLAR IGUALES, era dificil
WITH CANTEXPEDIENTES AS (
	SELECT j.cod_juzgado, COUNT(e.cod_expediente) as num_cant_exp FROM expedientes e 
		JOIN juzgados j ON e.cod_juzgado = j.cod_juzgado
	GROUP BY j.cod_juzgado
)
SELECT cod_juzgado, num_cant_exp FROM CANTEXPEDIENTES 
WHERE num_cant_exp = (SELECT MAX(num_cant_exp) FROM CANTEXPEDIENTES)

--- 7. AGREGAR A LA TABLA JUZGADOS EL ATRIBUTO FECHA_ALTA
ALTER TABLE juzgados ADD fecha_alta date;

--- 8. AGREGAR AL MODELO LA TABLA LOCALIDADES(CP,LOCALIDAD) Y RELACIONARLA CON JUZGADOS Y CLIENTES
CREATE TABLE localidades(
 cod_localidad int primary key,
 localidad varchar(50),
 cod_juzgado int foreign key references juzgados,
 cod_cliente int foreign key references clientes
);
	
