0% encontró este documento útil (0 votos)
86 vistas11 páginas

Query SQL

Este documento contiene varias consultas SQL para realizar análisis de datos sobre jugadores, docentes, estudiantes y asignaturas. Entre las consultas se incluyen: actualizaciones y selecciones de datos de jugadores, análisis de docentes por camada, encargado y área, y análisis de asignaturas sin docentes asignados. El documento proporciona instrucciones SQL para extraer y resumir información relevante de varias tablas en una base de datos de una institución educativa.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
86 vistas11 páginas

Query SQL

Este documento contiene varias consultas SQL para realizar análisis de datos sobre jugadores, docentes, estudiantes y asignaturas. Entre las consultas se incluyen: actualizaciones y selecciones de datos de jugadores, análisis de docentes por camada, encargado y área, y análisis de asignaturas sin docentes asignados. El documento proporciona instrucciones SQL para extraer y resumir información relevante de varias tablas en una base de datos de una institución educativa.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

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

También podría gustarte