select * from jugadores
UPDATE Jugadores
SET Nombre = 'Luis'
WHERE IDJugador = '1'
SELECT DISTINCT Posición FROM jugadores;
select * from jugadores
where CONVERT(varchar(50), nombre) LIKE 'a%';
select * from jugadores
where nombre LIKE '%o';
select TOP (4)
Dorsal
from jugadores
order by dorsal desc
select * from jugadores
select
count (nombre) as cuenta,
nombre
from Jugadores
group by Nombre
ALTER TABLE jugadores ALTER COLUMN apellido varchar(50)
select * from jugadores
where RIGHT (apellido,1) = 'Z';
select CONCAT (Nombre, ' ', Apellido, ' ', Dorsal) as todo from Jugadores
select REPLACE (dorsal, '2', '-') from Jugadores
ALTER TABLE Jugadores
ADD Fecha_Nacimiento DATETIME;
ALTER TABLE jugadores ALTER COLUMN fecha_nacimiento date
DELETE FROM jugadores
WHERE IDJUgador = 10;
UPDATE Jugadores
SET Fecha_Nacimiento = '1993-02-23'
WHERE IDJugador = '7'
select IDJugador, nombre, Apellido
, year(fecha_nacimiento) as ano
, month(fecha_nacimiento) as mes
, day(fecha_nacimiento) as dia
from jugadores;
SELECT Nombre
, DATENAME(year, fecha_nacimiento) AS anio
from jugadores
select IDjugador, Nombre
, DATEDIFF(YEAR, fecha_nacimiento, getdate()) as dif
from jugadores
SELECT CAST(fecha_nacimiento as varchar(50)) from jugadores
select
count(tipo) as cantidad
from asignaturas
where AREA = (select areaid from area
where areaid = '5')
group by tipo
select encargado_id, nombre as Nombre_Encargado
from encargado
union
select docentesid, nombre
from staff
/*indicar por jornada cantidad de docentes y sumar costo, solo para desarrollo
web.*/
select
jornada,
sum(costo) as Costo,
count (docentesid) as cant_docentes
from Asignaturas
left join staff on [Link] = [Link]
where [Link] = 'desarrollo web'
group by Jornada
/*ID encargado, nombre, apellido y cuantos docentes tiene asignado cada encargado.
Filtrar encargados que tienen como resultado 0*/
select
encargado.encargado_id,
[Link],
[Link],
count ([Link]) as cantidad_docentes
from encargado
inner join staff on encargado.Encargado_ID = [Link]
group by encargado.encargado_id, [Link], [Link]
select
[Link], [Link], [Link], [Link], [Link], [Link], [Link],
[Link]
from staff S
right join asignaturas A
ON [Link] = [Link]
WHERE [Link] IS NULL
/*4. Se quiere conocer la siguiente información de los docentes:
-El nombre completo: concatenar el nombre y el apellido. Renombrar NombresCompletos
-El documento
-Hacer un cálculo para conocer los meses de ingreso. Renombrar meses_ingreso
-El nombre del encargado. Renombrar NombreEncargado
-El teléfono del encargado. Renombrar TelefonoEncargado,
-El nombre del curso o carrera
-La jornada y el nombre del área.
Solo se desean visualizar solo los que llevan más de 3 [Link] los meses de
ingreso de mayor a menor. */
select
CONCAT([Link], ' ', [Link]) as Nombres_Completos,
[Link],
DATEDIFF(MONTH, fecha_ingreso, getdate()) as meses_ingreso,
CONCAT([Link], ' ', [Link]) as NombreEncargado,
[Link] as TelefonoEncargado,
[Link] as Nombre_Curso,
[Link] as Jornada_Cursada
from staff S
inner join encargado E on [Link] = E.Encargado_ID
inner join Asignaturas A on [Link] = [Link]
where DATEDIFF(MONTH, fecha_ingreso, getdate()) > '30'
SELECT
CONCAT( [Link],' ',[Link] ) AS NombresCompletos,
[Link],
DATEDIFF( MONTH, Staff.Fecha_Ingreso, GETDATE()) AS meses_ingreso,
[Link] AS NombreEncargado,
[Link] AS TelefonoEncargado,
[Link],
[Link],
[Link]
FROM Staff
LEFT JOIN Encargado
ON [Link] = Encargado.Encargado_ID
LEFT JOIN Asignaturas
ON [Link] = [Link]
LEFT JOIN Area
ON [Link] = [Link]
WHERE DATEDIFF( MONTH, Staff.Fecha_Ingreso, GETDATE() ) > 30
ORDER BY meses_ingreso DESC
/* 1) Análisis de docentes por camada:
Número de documento, nombre de docente y camada para identificar la camada mayor y
la menor según el numero de la camada.
Número de documento, nombre de docente y camada para identificar la camada con
fecha de ingreso Mayo 2021.
Agregar un campo indicador que informe cuales son los registros ”mayor o menor” y
los que son “Mayo 2021” y ordenar el
listado de menor a mayor por camada.
Nota: para el ejercicio 1, los dos análisis deben encontrarse en el mismo reporte.
Identificar si es necesario unificar o reunir la consulta SQL.
*/
select * from estudiantes
select
Nombre, documento, 'mayor' as camada
from staff
where camada =(select max (camada) from staff)
UNION
select
Nombre, documento, 'menor' as camada
from staff
where camada =(select min (camada) from staff)
UNION
select
Nombre, documento, 'mayo' as camada
from staff
where year (fecha_ingreso) = 2021 and month (fecha_ingreso) = 5
order by camada
group by nombre, documento, camada
select
[Link],
[Link],
[Link],
'Mayor' as marca
from staff t1
where [Link] = (select max(Camada) from staff)
union
select
[Link],
[Link],
[Link],
'Menor' as marca
from staff t1
where [Link] = (select min(Camada) from staff)
UNION
select
[Link],
[Link],
[Link],
'Mayo 2021' as marca
from staff t1
where year([Fecha_Ingreso])=2021 and month([Fecha_Ingreso])=05
order by Camada
/*2) Análisis diario de estudiantes:
Por medio de la fecha de ingreso de los estudiantes identificar:
-Cantidad total de estudiantes-
-Mostrar los periodos de tiempo separados por año, mes y día
-Presentar la información ordenada por la fecha que mas ingresaron estudiantes.
*/
select * from estudiantes
select
count (Estudiantesid) as cant_estudiantes,
year(Fecha_ingreso) as ano,
month(Fecha_ingreso) as mes,
day(Fecha_ingreso) as dia
from Estudiantes
group by Fecha_ingreso
order by cant_estudiantes desc
/*
3) Análisis de encargados con mas docentes a cargo:
Identificar el top 10 de los encargados que tiene más docentes a cargo, filtrar
solo los que tienen a cargo docentes.
Ordenar de mayor a menor para poder tener el listado correctamente.
*/
select * from staff
select * from Encargado
select top 10
e.Encargado_ID,
[Link],
[Link],
count ([Link]) AS Cantidad_docentes
from Staff S
left join encargado E on E.Encargado_ID = [Link]
where [Link] = 'encargado docentes'
group by e.Encargado_ID, [Link], [Link]
order by cantidad_docentes desc
SELECT top (10)
t1.Encargado_ID,
[Link],
[Link],
count([Link]) as cant
FROM Encargado t1
left join Staff t2 on [Link]=t1.Encargado_ID
where [Link]='Encargado Docentes'
group by t1.Encargado_ID,[Link],[Link]
ORDER by cant desc
/*
4) Análisis de estudiantes por área de educación:
Identificar:
-nombre del área LISTO
-si la asignatura es carrera o curso LISTO
-a qué jornada pertenece LISTO
-cantidad de estudiantes LISTO
-monto total del costo de la asignatura LISTO
Ordenar el informe de mayor a menor por monto de costos total. Tener en cuenta los
docentes que no tienen asignaturas
ni estudiantes asignados, también sumarlos. */
select
[Link],
[Link],
[Link],
count (estudiantesid) as cantidad_estudiantes,
SUM([Link]) as costo_Total
from Asignaturas asi
left join staff staff on [Link] = [Link]
left join Estudiantes est on [Link] = [Link]
inner join area on [Link] = [Link]
group by [Link], [Link], [Link]
order by costo_Total desc
/*
1)Análisis mensual de estudiantes por área:
Identificar para cada área:
-el año y el mes (concatenados en formato YYYYMM)
-cantidad de estudiantes
-monto total de las asignaturas.
Ordenar por mes del más actual al más antiguo y por cantidad de clientes de mayor a
menor.
*/
select
[Link],
CONVERT(nvarchar(6),est.[Fecha_Ingreso],112) AS YYYYMM,
count ([Link]) as cantidad_estudiantes,
sum ([Link]) as costo_total
from Estudiantes Est
inner join staff on [Link] = [Link]
inner join asignaturas asi on [Link] = [Link]
inner join area on [Link] = [Link]
group by [Link], CONVERT(nvarchar(6),est.[Fecha_Ingreso],112)
order by YYYYMM desc, cantidad_estudiantes desc
select [Link],
CONVERT(nvarchar(6),T1.[Fecha_Ingreso],112) AS YYYYMM,
COUNT([Link]) cantidad,
SUM([Link]) as Total
from Estudiantes as t1
inner join Staff as t2 on [Link]=[Link]
inner join Asignaturas as t3 on [Link]=[Link]
inner join Area as t4 on [Link]=[Link]
GROUP BY [Link],CONVERT(nvarchar(6),T1.[Fecha_Ingreso],112)
ORDER BY YYYYMM DESC, cantidad DESC
/*
2) Análisis encargado tutores jornada noche:
Identificar el nombre del encargado, el documento, el numero de la camada(solo el
numero) y la fecha de ingreso del tutor.
Ordenar por camada de forma mayor a menor.
*/
select * from encargado
select * from staff
select * from Asignaturas
select
[Link],
[Link],
right ([Link],5) as camada,
staff.[Fecha_Ingreso] as FechaIngresoTutor
from encargado
inner join staff on encargado.Encargado_ID = [Link]
inner join asignaturas on [Link] = [Link]
where [Link] LIKE '%Tutores%' and [Link] = 'noche'
SELECT
[Link],
[Link],
right([Link],5) as camada,
staff.[Fecha_Ingreso] as FechaIngresoTutor
FROM Encargado
inner JOIN Staff on encargado.Encargado_ID = [Link]
inner join Asignaturas on [Link]=[Link]
where [Link]='Noche'
and [Link] like '%Tutores%'
/*
3) Análisis asignaturas sin docentes o tutores:
Identificar el tipo de asignatura, la jornada, la cantidad de áreas únicas y la
cantidad total de asignaturas que no tienen asignadas docentes
o tutores.
Ordenar por tipo de forma descendente.
*/
select * from Asignaturas
select * from staff
select
[Link],
[Link],
count(distinct area) as cant_area,
count([Link]) as cant_asignaturas
from asignaturas A
left join staff on [Link] = [Link]
where DocentesID is null
group by [Link], [Link]
order by [Link] desc
SELECT
[Link],
[Link],
count(distinct [Link]) as cant_areas,
count([Link]) as cant_asignaturas
FROM Asignaturas t1
left join staff t2 on [Link]=[Link]
where DocentesID is null
group by [Link], [Link]
order by [Link] desc
/*
4) Análisis asignaturas mayor al promedio:
Identificar el nombre de la asignatura, el costo de la asignatura y el promedio del
costo de las asignaturas por área.
Una vez obtenido el dato, del promedio se debe visualizar solo las carreras que se
encuentran por encima del promedio.
*/
select * from asignaturas
select * from area
select
[Link] as nombre_asignatura,
[Link],
[Link] as nombre_area,
[Link] as promedio_costo
from Asignaturas Asi
group by [Link], [Link], [Link]
select
[Link],
[Link],
[Link]
from Asignaturas t1,
(select Nombre,avg(Costo) avgcosto
from Asignaturas
group by Nombre) t2
where [Link]=[Link]
and [Link]>[Link]
create table Plantilla_2022 (
idjugador int not null identity(1,1) primary key,
Nombre varchar(50) not null,
Apellido varchar (50) not null,
Dorsal int not null,
Posición varchar(50) not null);
/*insert into Plantilla_2022 (nombre, apellido, Dorsal, Posición)
VALUES ('Sergio', 'Rochet', '1', 'Arquero'),
('Marín', 'Rodríguez', '12', 'Arquero'),
('Mathías', 'Bernatene', '40', 'Arquero'),
('Ignacio', 'Suárez', '25', 'Arquero'),
('Mathías', 'Laborda', '2', 'Defensa'),
('Leonardo', 'Coelho', '3', 'Defensa'),
('Mario', 'Risso', '4', 'Defensa'),
('Juan', 'Izquierdo', '30', 'Defensa'),
('Christian', 'Almeida', '13', 'Defensa'),
('Leonardo', 'Lozano', '16', 'Defensa'),
('Camilo', 'Cándido', '6', 'Defensa'),
('José', 'Rodríguez', '44', 'Defensa'),
('Yonathan', 'Rodríguez', '5', 'Mediocampista'),
('Felipe', 'Carballo', '20', 'Mediocampista'),
('Joaquín', 'Trasante', '14', 'Mediocampista'),
('Francisco', 'Ginella', '17', 'Mediocampista'),
('Diego', 'Rodríguez', '14', 'Mediocampista'),
('Renzo', 'Sánchez', '21', 'Mediocampista'),
('Diego', 'Zabala', '22', 'Mediocampista'),
('Alex', 'Castro', '23', 'Mediocampista'),
('Manuel', 'Monzeglio', '24', 'Mediocampista'),
('Alfonso', 'Trezza', '19', 'Mediocampista'),
('Franco', 'Fagúndez', '32', 'Delantero'),
('Santiago', 'Ramírez', '27', 'Delantero'),
('Juan', 'Gutierrez', '28', 'Delantero'),
('Ignacio', 'Ramírez', '11', 'Delantero'),
('Emmanuel', 'Gigliotti', '9', 'Delantero'),
('Luis', 'Suárez', '9', 'Delantero');*/
DELETE FROM Plantilla_2022
WHERE IDJUgador between 29 and 56
create table Goles_Clausura (
Goles int not null identity(1,1) primary key,
IDjugador int not null,
Rival varchar(50) not null,
Escenario varchar(50) not null,
Fecha_cotejo date not null
foreign key (idjugador) references plantilla_2022(idjugador));
insert into Goles_Clausura
VALUES
(11, 'River', 'Estadio Centenario', '2022-03-15'),
(15, 'River', 'Estadio Centenario', '2022-03-15');
/*insert into Goles_Clausura (nombre, apellido, Posición, Rival, Escenario,
Fecha_cotejo)
VALUES ('Sergio', 'Rochet', '1', 'Arquero');*/
create table apodos (
idjugador int not null identity(1,1) primary key,
Apodo varchar(50) not null
);
select * from apodos
insert into apodos (apodo)
VALUES ('Chino'), ('Sin Apodo'), ('Sin Apodo'), ('Sin Apodo'), ('Sin Apodo'), ('Sin
Apodo'), ('Sin Apodo'), ('Sin Apodo'),
('Keke'), ('Charly'), ('Sin Apodo'), ('Pumita'), ('Sin Apodo'), ('Sin Apodo'),
('Sin Apodo'), ('Pancho'), ('Torito'),
('Sin Apodo'), ('Didi'), ('Sin Apodo'), ('Sin Apodo'), ('Sin Apodo'), ('Toro'),
('Colito'), ('Choclo'), ('Colo'),
('Puma'), ('Lucho');
truncate table goles_clausura
SELECT [Link],
[Link],
[Link],
[Link],
[Link],
YEAR(g.fecha_cotejo) AS Año,
MONTH(g.fecha_cotejo) AS Mes,
DAY(g.fecha_cotejo) AS Día,
[Link],
'Nacional' as Club
FROM goles_clausura G
INNER JOIN Plantilla_2022 P ON [Link] = [Link]
INNER JOIN apodos A ON [Link] = [Link]
GROUP BY [Link],
[Link],
[Link],
[Link],
[Link],
[Link],
YEAR(g.fecha_cotejo),
MONTH(g.fecha_cotejo),
DAY(g.fecha_cotejo);
select
[Link], [Link], [Link], [Link]ón, [Link], [Link], [Link],
G.Fecha_cotejo
from Plantilla_2022 P
inner join Goles_Clausura G on [Link] = [Link]
select
count ([Link]) as cantidad_goles, [Link], [Link], [Link], [Link]
from Goles_Clausura G
inner join Plantilla_2022 P on [Link] = [Link]
inner join apodos A on [Link] = [Link]
group by [Link], [Link], [Link], [Link]
order by cantidad_goles desc
select
[Link], [Link], [Link], [Link]ón, [Link], [Link], [Link],
G.Fecha_cotejo, [Link]
from Plantilla_2022 P
left join Goles_Clausura G on [Link] = [Link]
inner join apodos A on [Link] = [Link]
PARA SABER TIPO DE DATOS DE UNA TABLA: exec sp_columns nombretabla; (ej: exec
sp_columns goles_clausura;)
select GETDATE();
select DATEPART (day, getdate());
select datename (month, getdate());
select dateadd (day, 3, getdate());
select dateadd (hour, 3, getdate());
select dateadd (year, 3, '2022-03-10');
select datediff (day, '2022-03-10', '2022-03-12');
select MONTH (getdate());
group by Despachante with rollup
group by Despachante with rollup
top 3 with ties, me pone top 3 pero si el 3ro tiene misma cantidad que el cuarto me
pone el cuarto también
top 50 percent selecciona la mitad de los registros