You are on page 1of 17

SQL EJERCICIOS

USE ESTUDIANTESNT
GO
SELECT *
FROM ESTUDIANTE JOIN DOCUMENTO
ON ESTUDIANTE.fk_tipoDocumentoId=DOCUMENTO.pk_tipoDocumentoId
WHERE DOCUMENTO.pk_tipoDocumentoId = 1

USE ESTUDIANTESNT
GO
SELECT DOCUMENTO.Nombre_documento, ESTUDIANTE.numeroIdentificacion,
ESTUDIANTE.primerNombre,ESTUDIANTE.primerApellido,ESTUDIANTE.segundoApellido
FROM ESTUDIANTE JOIN DOCUMENTO
ON ESTUDIANTE.fk_tipoDocumentoId=DOCUMENTO.pk_tipoDocumentoId
WHERE DOCUMENTO.pk_tipoDocumentoId = 1

SEGÚN ELGENERO
USE ESTUDIANTESNT
GO
SELECT
ESTUDIANTE.primerNombre,ESTUDIANTE.primerApellido,ESTUDIANTE.segundoApellido,SEXO.se
xo
FROM ESTUDIANTE JOIN SEXO
ON SEXO.pk_sexoId=ESTUDIANTE.fk_sexoId
WHERE SEXO.pk_sexoId= 1

EJERCICIO

Realizar un query que perita mostrar los nombres completos de todos los estudiantes
del Nelson torres int que tengan como documento de identificación sea un pasaporte
USE ESTUDIANTESNT
GO
SELECT
DOCUMENTO.Nombre_documento,ESTUDIANTE.numeroIdentificacion,ESTUDIANTE.primerNombre,
ESTUDIANTE.segundoNombre, ESTUDIANTE.primerApellido,ESTUDIANTE.segundoApellido
FROM ESTUDIANTE JOIN DOCUMENTO
ON DOCUMENTO.pk_tipoDocumentoId=ESTUDIANTE.fk_tipoDocumentoId

WHERE DOCUMENTO.pk_tipoDocumentoId= 1

(Y la identificación sea pichincha)

AND numeroIdentificacion like '%17%'

Realizer un query que permita mostrar numero de cedula , primer apellido , fecha de
nacimiento de todas la mujeres que muester genero de todas las mujeres que hayan
inicado la carrera en el año 2015

USE ESTUDIANTESNT
GO
SELECT ESTUDIANTE.numeroIdentificacion,ESTUDIANTE.primerApellido,ESTUDIANTE.segundoApellido,
ESTUDIANTE.fechaNacimiento, GENERO.genero, ESTUDIANTE.fechaInicioCarrera
FROM ESTUDIANTE JOIN GENERO
ON GENERO.pk_generoId=ESTUDIANTE.fk_generoId
WHERE ESTUDIANTE.fk_generoId = 2 AND ESTUDIANTE.fechaInicioCarrera like '%2015%'
CLASE JOIN DE TRES TABLAS

TRABAJAR EN UN QUERY QUE PERMITA OBTENER LOS SIGUIENTES DATOS DE TODAS LAS ESTUDIANTES (SEXO MUJER)
DEL INSTITUTO NELSON TORRES QUE TENGAN COMO OCUMENTOO DE IDENTIFICACION LA CEDULA DE IDENTIDAD

USE ESTUDIANTESNT1
GO
SELECT ESTUDIANTE.primerNombre,ESTUDIANTE.segundoNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.segundoApellido, SEXO.sexo, DOCUMENTO.Nombre_documento
FROM (ESTUDIANTE JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTE.fk_sexoId)
JOIN DOCUMENTO
ON DOCUMENTO.pk_tipoDocumentoId=ESTUDIANTE.fk_tipoDocumentoId
WHERE SEXO.pk_sexoId=2

Todos los estudiantes de int que sean solteros y que su tipo de sangre sean O+

EJRCICIO
USE ESTUDIANTESNT1 -- MOSTRAR LOS DATOS DE LOS ESTUDIANTES
GO ---QUE PROVENE DE COLEGIO FISCAL Y ETNIA
SELECT ESTUDIANTE.primerNombre,ESTUDIANTE.segundoNombre,
ESTUDIANTE.primerApellido,ESTUDIANTE.segundoApellido,ETNIA.etnia,TIPOCOLEGIO.tipocol
egio
from (ESTUDIANTE join ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTE.fk_etniaId)--ACEMOS LA UNION PRIMERO DE DOS TABLAS
JOIN TIPOCOLEGIO
ON TIPOCOLEGIO.pk_tipoColegioId =ESTUDIANTE.fk_tipoColegioId
where ETNIA.pk_etniaId = 1 AND TIPOCOLEGIO.pk_tipoColegioId = 1

DEBR JUNTADO DE TRES TABLAS DENUSTRA BASEDE DATOS

DEBER UNION TRES TABLAS DE ACADEMIA


USE ACADEMIA
GO
--SELECT * FROM DOCENTES
SELECT ESTUDIANTES.Nombres, ESTUDIANTES.Apellidos, ESTUDIANTES.Direccion,
CURSOS.Fecha_inicio, DOCENTES.Especialidad
FROM (ESTUDIANTES JOIN CURSOS
ON ESTUDIANTES.Id_estudiantes = CURSOS.Id_Fk_estudiantes)
JOIN DOCENTES
ON ESTUDIANTES.Id_Fk_docentes= DOCENTES.Id_docentes
WHERE ESTUDIANTES.Direccion = 'Cayambe'

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’

CLASE NUEVA COUNT


Ejemplos
USE ESTUDIANTESNT
GO
SELECT *
FROM ESTUDIANTE
WHERE fk_tipoDiscapacidad < '7'
----------------------------------------
USE ESTUDIANTESNT
GO
SACAR PROMEDIO

USE ESTUDIANTESNT
GO
SELECT AVG (ingresoTotalHogar)
FROM ESTUDIANTE

SELECT *
FROM ESTUDIANTE
WHERE fechaNacimiento like '%1990%'

USE ESTUDIANTESNT
GO
SELECT SUM (cantidadMiembrosHogar)
FROM ESTUDIANTE

USE ESTUDIANTESNT
GO
SELECT MAX (ingresoTotalHogar)
FROM ESTUDIANTE

USE ESTUDIANTESNT
GO
SELECT MIN (ingresoTotalHogar)
FROM ESTUDIANTE

DEBER
Realizar los siguientes reportes contar el número de estudiantes cuy ultimo digito
de cedula sea 0

Contar el número de estudiantes de sexo femenino cuyo correo electrónico sea de


yahoo

Marca todos los padres de familia cuyo nivel de formación sea superior a un nivel
universitario

Sumar todas las madres de familia cuyo nivel de formación sea primaria

Calcular el promedio de los ingresos familiares de los estudiantes de sexo masculino


cuyo tipo de sangre sea A+

Contar el numero de chicas cuya etnia sea indígena

Preparar un reporte que muestre los siguientes datos números completos, numero de
cedula,nivel académico que cursa, sexo , teléfono, paralelo, tipo de colegio al que
pertenece de todos los estudiantes cuyo ingreso familiar sea inferior a 400 dolare
ssu estado civil sea soltera y pertenesca a unmm hogar cuyo total de miembros del
hogar no supere las 5 personas , (AL FINALSE DEBE MOSTRAR EL NUMERO TOTAL DE
ESTUDIANTES INCLUIDOS EN EL REPORTE.(consultar)).

1.- USE ESTUDIANTESNT


GO
SELECT COUNT (*) FROM ESTUDIANTE
WHERE numeroIdentificacion like '%0'

2.- USE ESTUDIANTESNT


GO
SELECT COUNT (*) FROM ESTUDIANTE
WHERE fk_sexoId like '%2' AND correoElectronico like '%yahoo%'

3.- USE ESTUDIANTESNT


GO
SELECT COUNT (*) FROM ESTUDIANTE
WHERE fk_nivelFormacionPadre = 8

4.- USE ESTUDIANTESNT


GO
SELECT COUNT (*) FROM ESTUDIANTE
WHERE fk_nivelFormacionMadre = 3

5.- USE ESTUDIANTESNT


GO
SELECT AVG (ingresoTotalHogar) FROM ESTUDIANTE
WHERE fk_sexoId = 1 AND fk_tipoSangre = 1

6.- USE ESTUDIANTESNT


GO
SELECT COUNT (*) FROM ESTUDIANTE
WHERE fk_sexoId =2 AND fk_etniaId = 1

7.-

USE ESTUDIANTESNT
GO
SELECT ESTUDIANTE.primerNombre, ESTUDIANTE.segundoNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.segundoApellido, ESTUDIANTE.numeroCelular,
ESTUDIANTE.numeroIdentificacion, NIVELACADEMICO.nivelacademico, PARALELO.paralelo,
SEXO.sexo, TIPOCOLEGIO.tipocolegio
FROM (ESTUDIANTE join NIVELACADEMICO
on NIVELACADEMICO.pk_nivelAcademicoQueCursa=ESTUDIANTE.fk_nivelAcademicoQueCursa)
join PARALELO
on PARALELO.pk_paraleloId=ESTUDIANTE.fk_paraleloId
join SEXO
ON SEXO.pk_sexoId=ESTUDIANTE.fk_sexoId
join TIPOCOLEGIO
on TIPOCOLEGIO.pk_tipoColegioId=ESTUDIANTE.fk_tipoColegioId
where (ESTUDIANTE.ingresoTotalHogar < 400 and ESTUDIANTE.fk_estadocivilId=1) and
ESTUDIANTE.cantidadMiembrosHogar < 5
3._ todos los estudiantes cuyo nivel de formación de la madre sea primaria y el
nivel de de formación del padre sea secundaria

1USE ESTUDIANTESNT2
GO
select
numeroIdentificacion,primerApellido,primerNombre,fk_nivelFormacionMadre,fk_nivelForm
acionPadre,estadocivil,fechaNacimiento,nivelacademico,correoElectronico
from ESTUDIANTE join NIVELACADEMICO
on pk_nivelAcademicoQueCursa =fk_nivelAcademicoQueCursa

join ESTADOCIVIL
on pk_estadocivilId = fk_estadocivilId
WHERE fk_nivelFormacionMadre =3 AND fk_nivelFormacionPadre =5

Examen
USE ESTUDIANTESNT2
GO
select numeroIdentificacion,primerApellido,segundoApellido ,primerNombre,
segundoNombre, numeroCelular, fk_estadocivilId,correoElectronico, fk_etniaId,
ingresoTotalHogar, fk_nivelFormacionPadre, cantidadMiembrosHogar
from ESTUDIANTE join INGRESOSESTUDIANTE
on pk_ingresosestudianteId = fk_ingresosestudianteId
WHERE (ESTUDIANTE.fk_nivelFormacionPadre < 5) AND ingresoTotalHogar < 380 AND
cantidadMiembrosHogar < 3

…………………………………………………………………………………………… 2do BIMESTRE…………………………………………………………………..


LISTAR REGISTROS EN UN ORDEN DETERMINADO
Para ello se debe considera que un
 E ordenamiento se lo hace al final del query
 Se debe especificar el nombre del campo (atributo) por el
cual se desea ordenar (ascendente-descendentemente)
ORDER BY: es para ordenar datos

Sintaxis
ORDER BY NOMBRE DEL CAMPO (ASC-DESC)

SELECT DATOS
FROM TABLAS
WHERE CONDICION EVALUACION
ORDER BY DATO (CAMPO O ATRIBUTO)
>= MAYOR = POSTERIOR
EJEMPLO <= MENOR= INFERIOR

SELECT DATOS
FROM TABLAS
WHERE CONDICION EVALUACION
ORDER BY DATO (CAMPO O ATRIBUTO)

SELECT primerApellido,primerNombre
FROM ESTUDIANTE
WHERE fechaNacimiento > '01/01/1993'
ORDER BY primerApellido ASC

AGRUPACION DE DATOS

Permite agrupadr FILAS según las columnas (campo o atributo )

Que se indiquen como parámetros, se debe considerar que

CUANDO SE AGRUPA SOLO SE PUEDE SELECCIONAR LOS CAMPOS

AGRUPADOS

EJEMPLOS
SELECT primerApellido,primerNombre, sexo
FROM ESTUDIANTE JOIN SEXO
ON fk_sexoId=pk_sexoId
--WHERE fechaNacimiento > '01/01/1993'
--ORDER BY fechaNacimiento ASC
GROUP BY sexo,primerApellido, primerNombre

CONTAR Y AGRUPAR HOMBRE Y MUJERE DEL INT


SELECT
sexo, COUNT (*) AS TOTAL
FROM ESTUDIANTE JOIN SEXO
ON fk_sexoId=pk_sexoId
GROUP BY sexo

DEBER
Realizar un query que permita mostrar etnia, estado civil , nivel academico, y total

Consultar
Uso de variables en sql y sentencias de control en sql

EJERCICIO DE TALLER
realizar un query que permita contar el numero de estudiantes
mujeres y solteras cuyo numero de cedula termine en 7

SELECT SEXO.sexo, ESTADOCIVIL, count (*) as total


FROM ESTUDIANTE join SEXO

on sexo.pk_sexoId = ESTUDIANTE.fk_sexoId
join ESTADOCIVIL

on ESTUDIANTE.fk_estadocivilId = ESTADOCIVIL.pk_estadocivilId
where SEXO.pk_sexoId = 2 and ESTADOCIVIL.pk_estadocivilId = 1 and
ESTUDIANTE.numeroIdentificacion like '%7'
group by SEXO.sexo, ESTADOCIVIL

PROGRAMACIÓN TRANSACKT SQL 20/08/2018


O implementación de estructuras de programación en SQL
QUE ES UNA VARIABLE.- Es un lugar en dode se guarda temporalmente un dato lo que es decir es
una entidad a la que seasigna un valor y este valor puede cambiar durante el proceso, donde se utiliza
la varible generalmente en SQL seseusa dos tipos de variable:

 GLOBALES
 LOCALES .- Son definidas por el usuario.las variables locales d¿se
declaran atraves de un nombre y se define usando la palabra reservada y
reciben un valor inicial mediante la instrucción, SELECT O SET.
Son las varisble que yo utilizo como programador las que yo
creo coomo técnico

Siempre los nombres de la variables empiezan con el simbolo @


A cada variable local se le debe asignar un tipo de dato. (definida por el
usuario)
Sintaxis:
DECLARE.- @Nombre Variable Tipo Dato

DECLARE @prueba varchar (50)

Asignar un valor de una variable

SET= (valor inicial el cual arancamos)

SET @VARIABLE =VALOR ejemplo

DECLARE @Fecha (Date)

SET @fecha =’01/011/2018’

Mostrar el resultado de una variable:

PRINT (IMPRIMIR)

PRINT ’Comentario’ + (@VARIABLE) ejemplo

PRINT ‘La fecha inicial e’ + (@fecha)

SENTENCIA DE CONTROL PARA LOS GLOBALES USAMOS @

 If PARA LOS GLOBALES USAMOS @@

 For
 While
 case

ejemplo
variable para sumar dos valores tipo entero
console.write.line
int numero1,numero2,reultado,
console WriteLine (‘Ingrese 1’);

VARIABLE GLOBAL
Son suministradas por el sistema y esta predefinidas por el sistema estas
son:
 VERSIÓN= devuelve la versión con la que se esta trabajando
 SEVERNAME = devuelve el nombre del servidor
 LANGUAGE = devuelve el lenguaje del servidor o del motor
 MAX CONECTION = devuelv el numero máximo de conexciones
permitidas en ese servidor
 ERROR = devuekve el ultimo error generado en una transacción
 IDENTY = devuelve el ultimo valor de un ataributo IDENTITY (llaves
primarias) mediante reset.
USE ESTUDIANTESNT2
GO
 --PRINT 'la nombre de este motor de base de datos es:' + @@SERVERNAME;
 --PRINT 'El lwnguaje de este motor de base de datos es:' + @@LANGUAGE;
 --PRINT 'la version de este motor de base de datos es:' + @@VERSION;
 --PRINT 'el numero de conecciones permitidas es:' + STR (@@MAX_CONNECTIONS);
 PRINT 'el numero de conecciones permitidas es:' + STR (@@IDENTITY)

HERRAMIENTAS PARA EL CONTROL DE FLUIDO


El lenguaje SQL puede utilizar instrucciones de control de flujo y estas puede
utilizar con:
INSTRUCCIONES INTERACTIVAS.- define la ejecución cuando la condición de
evaluación es verdadera
SINTAXIS:
IF (condición evaluación)
BEGIN
--
--
--
END
ELSE
BEGIN
--
--
--
END

 Instrucciones en lotes
 Instrucciones en procedimientos almacenados

EJERCICIOS
Realizar un Query que permita verificar si un estudiante se encuentre mutilando en el
INT en tal caso se debe proveer a ese estudiante al nivel superior caso contrario al nivel
inferior
1.-busco al estudiante
2.-controlar si el estudiante está matriculado (nivel)
3.- si está matriculado promueva de nivel (suba nivel)
En caso contrario escribir los datos del estudiante (bajar nivel)
el siguiente query muestra el primer nombre, segundo nombre,primer apellido,
segundo apellido de una estudiante cuyo numero de cedula se conoca en caso de
que
el estudiante este en la base de datos se debe desplegar sus nombres completos y
nivel academico que cursa
USE ESTUDIANTESNT2
GO
--SELECT * FROM ESTUDIANTE
DECLARE @cedula VARCHAR (15)
SET @cedula = '1723973713'
SELECT numeroIdentificacion,
primerNombre,segundoNombre,primerApellido,fk_nivelAcademicoQueCursa
from ESTUDIANTE
WHERE numeroIdentificacion = @cedula

USE ESTUDIANTESNT2
GO
--SELECT * FROM ESTUDIANTE
DECLARE @cedula VARCHAR (15)
SET @cedula = '111111111'
IF EXISTS (SELECT numeroIdentificacion,
primerNombre,segundoNombre,primerApellido,fk_nivelAcademicoQueCursa
from ESTUDIANTE
WHERE numeroIdentificacion = @cedula)
BEGIN
SELECT numeroIdentificacion,
primerNombre,segundoNombre,primerApellido,fk_nivelAcademicoQueCursa
FROM ESTUDIANTE
WHERE numeroIdentificacion = @cedula
END
ELSE
BEGIN
SELECT * FROM ESTUDIANTE
END

PARA INSERTAR UN ESTUDIANTE


DECLARE @cedula VARCHAR (15)
SET @cedula = '111111111'
IF EXISTS (SELECT numeroIdentificacion,
primerNombre,segundoNombre,primerApellido,fk_nivelAcademicoQueCursa
from ESTUDIANTE
WHERE numeroIdentificacion = @cedula)
BEGIN
UPDATE ESTUDIANTE SET fk_nivelAcademicoQueCursa = fk_nivelAcademicoQueCursa+1
WHERE numeroIdentificacion = @cedula
END
ELSE
BEGIN
INSERT INTO ESTUDIANTE
(numeroCelular,primerNombre,segundoNombre,primerApellido,segundoApellido,
fk_nivelAcademicoQueCursa)
VALUES
('1111122222','JUAN','FERNANDO','TORRES', 'DEL OCHO',1)

END
SELECT * FROM ESTUDIANTE

DEBER
1. Realizar un query (usando la sentencia IF), que permita. Contar todos los
registros de una base de datos si uno de ellos contiene en el primer nombre
MARIA.

DECLARE @nombre VARCHAR(10)


SET @nombre = 'MARIA'

IF EXISTS(
SELECT *
FROM ESTUDIANTESINT
)
BEGIN
SELECT primerNombre,COUNT (*) AS 'VALOR_T'
FROM ESTUDIANTESINT
WHERE primerNombre = @nombre
GROUP BY primerNombre
END

--2 Realizar un query (usando la sentencia IF), que permita. Contar los registros de
todos los estudiantes si los estudiantes pertenecen a primer nivel.

DECLARE @nivel VARCHAR (1)


SET @nivel = '1'

IF EXISTS(
SELECT *
FROM ESTUDIANTESINT
)
BEGIN
SELECT COUNT (*) AS N_REG
FROM ESTUDIANTESINT
WHERE fk_nivelAcademicoQueCursa = @nivel
END

--3. Realizar un query que permita. Contar los registros de todos los estudiantes
nacidos en la provincia diferente a la provincia de pichincha.

SELECT COUNT (*)


FROM ESTUDIANTESINT
WHERE fk_provinciaNacimientoId <> '17'

--4.- realizar un query que permita. contar los registros de todos los estudiantes
nscidos en el canton cayambe
USE ESTUDIANTESNT
GO
DECLARE @cantonNacimiento VARCHAR (10)
SET @cantonNacimiento = '1702'
IF EXISTS (SELECT fk_cantonNacimientoId
FROM ESTUDIANTESINT
WHERE ESTUDIANTESINT.fk_cantonNacimientoId = @cantonNacimiento
)
BEGIN
SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT
WHERE ESTUDIANTESINT.fk_cantonNacimientoId = @cantonNacimiento
END
ELSE
BEGIN
SELECT * FROM ESTUDIANTESINT
END

5. Realizar un query que permita. Mostrar los siguientes datos agrupados por escuela: • Nombres completos
del estudiante. • Número de cédula • Sexo • Fecha de nacimiento • Cantón de nacimiento

USE ESTUDIANTESNT
GO
SELECT
primerNombre,segundoNombre,primerApellido,segundoApellido,numeroIdentificacion,sexo,
fechaNacimiento,canton,carrera
FROM ESTUDIANTESINT JOIN CARRERAS ON
CARRERAS.pk_carreraid=ESTUDIANTESINT.fk_carreraid
JOIN SEXO ON SEXO.pk_sexoId=
ESTUDIANTESINT.fk_sexoId
JOIN CANTON ON
CANTON.pk_cantonNacimientoId=ESTUDIANTESINT.fk_cantonResidenciaId
GROUP BY
primerNombre,segundonombre,primerApellido,segundoApellido,numeroIdentificacion,sexo,
fechaNacimiento,canton,carrera

--6./ relaizar un query que permita mostrar los siguientes datos agrupados por
escuela, se debe contar cuantas mujeres y cuantos hombres;
--nombres completos del estudiante, numero de cedula , sexo , fecha de nacimiento,
canton de nacimiento.

USE ESTUDIANTESNT
GO
SELECT SEXO.sexo, CARRERAS.carrera, COUNT(*) AS TOTAL
FROM ESTUDIANTESINT JOIN SEXO ON SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId
JOIN CARRERAS ON CARRERAS.pk_carreraid =
ESTUDIANTESINT.fk_carreraId

GROUP BY SEXO.sexo, CARRERAS.carrera

--7. Realizar un query que permita. Mostrar los siguientes datos


-- Número de cédula
-- Sexo
-- Fecha de nacimiento
-- Cantón de nacimiento
--A. Considerando que si el último dígito de cédula está entre 1 y 5, se debe
desplegar un mensaje que diga: su día de matrícula es lunes.
--B. Considerando que si el último dígito de cédula es 2 y 6, se debe desplegar un
mensaje que diga: su día de matrícula es martes.
--C. Considerando que si el último dígito de cédula es 3 y 7, se debe desplegar un
mensaje que diga: su día de matrícula es miércoles
--D. Considerando que si el último dígito de cédula es 4 y 8 se debe desplegar un
mensaje que diga: su día de matrícula es jueves
--E. Considerando que si el último dígito de cédula es 9 ó 0 se debe desplegar un
mensaje que diga: su día de matrícula es viernes

USE ESTUDIANTESNT
GO

IF EXISTS(SELECT
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId
GROUP BY
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
)
BEGIN
SELECT
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId where numeroIdentificacion like'%1' or
numeroIdentificacion like'%5'
GROUP BY
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
PRINT N'SU DIA DE MATRICULA ES LUNES.';
END

BEGIN

SELECT
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId where numeroIdentificacion like'%2' or
numeroIdentificacion like'%6'
GROUP BY
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
PRINT N'SU DIA DE MATRICULA ES MARTES.';

END

BEGIN

SELECT
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId where numeroIdentificacion like'%3' or
numeroIdentificacion like'%7'
GROUP BY
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
PRINT N'SU DIA DE MATRICULA ES MIERCOLES.';

END
BEGIN

SELECT
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId where numeroIdentificacion like'%4' or
numeroIdentificacion like'%8'
GROUP BY
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
PRINT N'SU DIA DE MATRICULA ES JUEVES.';

END
BEGIN

SELECT
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId where numeroIdentificacion like'%9' or
numeroIdentificacion like'%0'
GROUP BY
ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,ESTUDIANTESINT.fechaNacimiento,ESTUDIANTESINT.nume
roIdentificacion,SEXO.sexo,CANTON.canton
PRINT N'SU DIA DE MATRICULA ES VIERNES.';

END

--8. Realizar un query que permita. Mostrar los siguientes datos:


--Nombres completos,
--tipo de sangre,
--sexo,
--estado civil,
--etnia,
--provincia de nacimiento,
--cantón de nacimiento
--,correo electrónico y celular
--(para todos los datos no se deben NO se deben mostrar códigos, se debe mostrar la
información correspondiente a cada campo):
--Si el estudiante es hombre se debe darle un bono de 100 dólares adicionales al
ingreso total del hogar, si el estudiante es mujer se debe quitarle 100 dólares del
ingreso total del hogar del estudiante.
USE ESTUDIANTESNT
GO

DECLARE @hombre VARCHAR(15)


SET @hombre='HOMBRE'
DECLARE @mujer VARCHAR(15)
SET @mujer='MUJER'

IF EXISTS( SELECT ESTUDIANTESINT.ingresoTotalHogar,


ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApelli
do,ESTUDIANTESINT.segundoApellido,TIPOSANGRE.tipoSangre
,SEXO.sexo,ESTADOCIVIL.estadocivil,ETNIA.etnia,PROVINCIA.provincia,CANTON.canton,EST
UDIANTESINT.correoElectronico,ESTUDIANTESINT.numeroCelular
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId JOIN TIPOSANGRE ON
TIPOSANGRE.pk_tipoSangre=ESTUDIANTESINT.fk_tipoSangre JOIN ESTADOCIVIL ON
ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId JOIN ETNIA ON
ETNIA.pk_etniaId=ESTUDIANTESINT.fk_etniaId JOIN PROVINCIA ON
PROVINCIA.pk_provinciaNacimientoId=ESTUDIANTESINT.fk_provinciaResidenciaId
where SEXO.sexo = @hombre
)
BEGIN
SELECT ESTUDIANTESINT.ingresoTotalHogar
,ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApell
ido,ESTUDIANTESINT.segundoApellido,TIPOSANGRE.tipoSangre
,SEXO.sexo,ESTADOCIVIL.estadocivil,ETNIA.etnia,PROVINCIA.provincia,CANTON.canton,EST
UDIANTESINT.correoElectronico,ESTUDIANTESINT.numeroCelular
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId JOIN TIPOSANGRE ON
TIPOSANGRE.pk_tipoSangre=ESTUDIANTESINT.fk_tipoSangre JOIN ESTADOCIVIL ON
ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId JOIN ETNIA ON
ETNIA.pk_etniaId=ESTUDIANTESINT.fk_etniaId JOIN PROVINCIA ON
PROVINCIA.pk_provinciaNacimientoId=ESTUDIANTESINT.fk_provinciaResidenciaId
where SEXO.sexo = @hombre
GROUP BY ESTUDIANTESINT.ingresoTotalHogar
,ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApell
ido,ESTUDIANTESINT.segundoApellido,TIPOSANGRE.tipoSangre
,SEXO.sexo,ESTADOCIVIL.estadocivil,ETNIA.etnia,PROVINCIA.provincia,CANTON.canton,EST
UDIANTESINT.correoElectronico,ESTUDIANTESINT.numeroCelular
UPDATE ESTUDIANTESINT SET ingresoTotalHogar = ingresoTotalHogar + 100 WHERE
fk_sexoId = '1'
END
BEGIN
SELECT ESTUDIANTESINT.ingresoTotalHogar
,ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApell
ido,ESTUDIANTESINT.segundoApellido,TIPOSANGRE.tipoSangre
,SEXO.sexo,ESTADOCIVIL.estadocivil,ETNIA.etnia,PROVINCIA.provincia,CANTON.canton,EST
UDIANTESINT.correoElectronico,ESTUDIANTESINT.numeroCelular
FROM (ESTUDIANTESINT JOIN CANTON ON CANTON.pk_cantonNacimientoId
=ESTUDIANTESINT.fk_cantonResidenciaId)JOIN SEXO ON
SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId JOIN TIPOSANGRE ON
TIPOSANGRE.pk_tipoSangre=ESTUDIANTESINT.fk_tipoSangre JOIN ESTADOCIVIL ON
ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId JOIN ETNIA ON
ETNIA.pk_etniaId=ESTUDIANTESINT.fk_etniaId JOIN PROVINCIA ON
PROVINCIA.pk_provinciaNacimientoId=ESTUDIANTESINT.fk_provinciaResidenciaId
where SEXO.sexo = @mujer
GROUP BY ESTUDIANTESINT.ingresoTotalHogar
,ESTUDIANTESINT.primerNombre,ESTUDIANTESINT.segundoNombre,ESTUDIANTESINT.primerApell
ido,ESTUDIANTESINT.segundoApellido,TIPOSANGRE.tipoSangre
,SEXO.sexo,ESTADOCIVIL.estadocivil,ETNIA.etnia,PROVINCIA.provincia,CANTON.canton,EST
UDIANTESINT.correoElectronico,ESTUDIANTESINT.numeroCelular
UPDATE ESTUDIANTESINT SET ingresoTotalHogar = ingresoTotalHogar +100 WHERE
fk_sexoId = '2'
END
PRUEBA
---REALIZAR UN QUERY QUE PERMITA MOSTRAR LOS SIGUIENTES DATOS TERMINO EN 3 O 4 DEBE
DESPLAZA DIA DE MATRICULA LUNES
USE ESTUDIANTESNT
GO
DECLARE @MENSAJE VARCHAR(50)
SET @MENSAJE='SU MATRICULA ES LUNES'

IF EXISTS (SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,tipoS
angre,sexo,fechaNacimiento
FROM ESTUDIANTESINT JOIN SEXO
on pk_sexoId = fk_sexoId
JOIN TIPOSANGRE
on pk_tipoSangre=fk_tipoSangre)
BEGIN
(SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,tipoS
angre,sexo,fechaNacimiento,@MENSAJE as MATRICULA
FROM ESTUDIANTESINT JOIN SEXO
on pk_sexoId = fk_sexoId
JOIN TIPOSANGRE
on pk_tipoSangre=fk_tipoSangre
WHERE numeroIdentificacion LIKE '%1' OR numeroIdentificacion LIKE '%2')
END

ELSE
BEGIN
SELECT*FROM ESTUDIANTESINT
END
--Realizar un reporte usando funciones donde se muestre la siguiente informacion
--primer nomnre, primer apellido,numero de identificacion, sexo,edad(en años)
--provincia de nacimiento, canton de nacimiento para todos los estudiantes de tipo
de sangre b+
--nacidos en el cantón Cayambe.

use ESTUDIANTESNT
go

CREATE FUNCTION t(@tip varchar(50))


RETURNS TABLE
AS
RETURN (
SELECT
primerNombre,primerApellido,numeroIdentificacion,SEXO.sexo,CANTON.canton,PROVINCIA.p
rovincia,TIPOSANGRE.tipoSangre
FROM ESTUDIANTESINT
JOIN SEXO ON ESTUDIANTESINT.fk_sexoId=SEXO.pk_sexoId
JOIN CANTON ON ESTUDIANTESINT.fk_cantonNacimientoId=CANTON.pk_cantonId
JOIN PROVINCIA ON
ESTUDIANTESINT.fk_provinciaNacimientoId=PROVINCIA.pk_provinciaNacimientoId
JOIN TIPOSANGRE ON ESTUDIANTESINT.fk_tipoSangre=TIPOSANGRE.pk_tipoSangre
WHERE TIPOSANGRE.tipoSangre=@tip
)
GO
SELECT * FROM dbo.t('B+')

You might also like