Professional Documents
Culture Documents
1
ANY. (Cualquiera) miembro del conjunto de operaciones TRUE
2
EXISTS. TRUE si una subconsulta contiene cualquiera de las filas.
3
LIKE. TRUE si el operando coincide con un patrón.
4
OR. TRUE si cualquiera de las dos expresiones booleanas es TRUE.
1. DEBER.
En la misma base de datos hacer una consulta, de cada sentencias donde se use cada una
de los operadores. A mano y copiar el resultado. Para miércoles 06/06/2018 en hoja de
papel ministro
BASE DE DATOS VERDULEROS.
2. Grupos, Productos, Vendedores, Ventas (buscar el diseño de estas tablas)
3. Hacer la suma de la base de datos ventas, (consultar)
5
ACTUALIZACION MASIVA
6
Tarea 13/06/2018
Realizar un query que permita obtener un reporte de los productos vendidos con el 10%
de su precio normal. Una vez obtenida la información analizar información para los
precios comprendidos en el siguiente rango entre 0$ y 1$
7
USE verduleros
GO
--SELECT * FROM Productos
SELECT NomProducto AS PRODUCTOS, Precio, Precio*0.1 AS DESCUENTO FROM Productos -
- Seleccione el nombre del producto y llamele PRODUCTOS
WHERE Precio BETWEEN 0 AND 2 -- donde el precio este en el rango entre 0 y 1
USE verduleros
GO
--SELECT * FROM Productos
SELECT [Cod Producto] AS PRODUCTOS, Kilos, Kilos*2.2046 AS LIBRAS FROM ventas
Taller 3
8
Realizar un reporte que permita mostrar el precio de venta al público de cada producto
considerando que el Iva vigente corresponde al 12%.
USE verduleros
GO
--SELECT * FROM Productos
--SELECT NomProducto, Precio, Precio*0.12 + Precio AS IVA12 FROM Productos --
Seleccione el nombre del producto y llamele PRODUCTOS
--WHERE Precio BETWEEN 0 AND 2 -- donde el precio este en el rango entre 0 y 1
SELECT NomProducto, Precio, Precio*1.12 AS IVA12 FROM Productos
9
Taller 4
Realizar un reporte que permita mostrar todos los productos cuyo precio sea inferior a 2$
y su precio de venta al publico IVA, sea inferior a 3$
USE verduleros
GO
--SELECT * FROM Productos
--SELECT NomProducto, Precio, Precio*0.12 + Precio AS IVA12 FROM Productos --
Seleccione el nombre del producto y llamele PRODUCTOS
--WHERE Precio BETWEEN 0 AND 2 -- donde el precio este en el rango entre 0 y 1
SELECT NomProducto, Precio , Precio*1.12 AS IVA12 FROM Productos
WHERE Precio < 2 AND Precio *1.12 < 3
20/06/2018
JOIN / ON
Unión de Tablas
Los JOINs en SQL sirven para combinar filas de dos o más tablas basándose en un campo común
entre ellas, devolviendo por tanto datos de diferentes tablas. Un JOIN se produce cuando dos o
más tablas se juntan en una sentencia SQL
10
USE ESTUDIANTESNT
GO
SELECT
ESTUDIANTE.numeroIdentificacion,ESTUDIANTE.primerNombre,ESTUDIANTE.segundoNombre,
DOCUMENTO.Nombre_documento
FROM ESTUDIANTE JOIN DOCUMENTO
ON ESTUDIANTE.fk_tipoDocumentoId=DOCUMENTO.pk_tipoDocumentoId
WHERE DOCUMENTO.pk_tipoDocumentoId=1
Sintaxis
ON A JOIN X
WHERE A_PK_A = X_FK_A
EJERCICIOS
Realizar un query que permita mostrar los Nombres Completos de todos los estudiantes
del Nelson Torres INT que tengan como documentos de identificación sea un pasaporte.
11
USE ESTUDIANTESNT
GO
SELECT DOCUMENTO.Nombre_documento, ESTUDIANTE.numeroIdentificacion,
ESTUDIANTE.primerNombre, ESTUDIANTE.segundoNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.segundoApellido
FROM ESTUDIANTE JOIN DOCUMENTO
ON ESTUDIANTE.fk_tipoDocumentoId = DOCUMENTO.pk_tipoDocumentoId
WHERE DOCUMENTO.pk_tipoDocumentoId = 1 AND ESTUDIANTE.numeroIdentificacion LIKE
'17%'
Ejercicio 2
USE ESTUDIANTESNT
GO
SELECT ESTUDIANTE.numeroIdentificacion, ESTUDIANTE.primerNombre,
ESTUDIANTE.primerApellido, SEXO.sexo, ESTUDIANTE.correoElectronico
FROM ESTUDIANTE JOIN SEXO
ON ESTUDIANTE.fk_tipoDocumentoId = SEXO.pk_sexoId
WHERE Sexo.pk_sexoId <= 3 AND ESTUDIANTE.correoElectronico LIKE '%gmail%'
12
Realizar un Query que permita mostrar el numero de cedula, primer apellido, fecha de
naciemiento de todas las mujeres que se hayan iniciado la carrera en el año 2015,
USE ESTUDIANTESNT
GO
SELECT
ESTUDIANTE.numeroIdentificacion,ESTUDIANTE.primerApellido,ESTUDIANTE.fechaNacimi,
GENERO.genero, ESTUDIANTE.fechaInicioCarrera
FROM ESTUDIANTE JOIN GENERO
ON ESTUDIANTE.fk_tipoDocumentoId = GENERO.pk_generoId
WHERE ESTUDIANTE.fechaInicioCarrera LIKE '%2015%'
25/06/2018
JOIN CON TRES TABLAS
Realizar un reporte que nos permita obtener los datos de todos los estudiantes nombre y
apellido (Sexo Mujer) del INT que tengan como documento de identificación la cedula
de identidad. (Se utilizaran tres tablas con JOIN) (DOCUMENTO, ESTUDIANTE,
SEXO)
13
SINTAXIS
USE ESTUDIANTESINNT
GO
SELECTESTUDIANTE.primerNombre,ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, SEXO.sexo
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
Ejercicio 2
Realizar un Query que permitan obtener los datos de todos los estudiantes de INT,
SOLTEROS y que su tipo de sangre sea o+.
14
USE ESTUDIANTESINNT
GO
SELECT ESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ESTADOCIVIL.estadocivil, TIPOSANGRE.tipoSangre
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTE.fk_estadocivilId)
JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = TIPOSANGRE.pk_tipoSangre
WHERE ESTADOCIVIL.pk_estadocivilId = 1 and TIPOSANGRE.pk_tipoSangre = 7
Ejercicio5
Recupere todos los datos de los estudiantes del INT que provienen de colegios fiscales y
que su etnia sea INDIGENA
15
USE ESTUDIANTESINNT
GO
SELECT ESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ETNIA.etnia, TIPOCOLEGIO.tipocolegio
FROM (ESTUDIANTE JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTE.fk_etniaId)
JOIN TIPOCOLEGIO
ON TIPOCOLEGIO.pk_tipoColegioId = TIPOCOLEGIO.pk_tipoColegioId
WHERE ETNIA.pk_etniaId = 1 and TIPOCOLEGIO.pk_tipoColegioId = 1
Taller 09/07/2018
Realizar un query que permita tener un reporte que contenga, nombre completos y
numero de cedula de todos los estudiantes cuyo estado civil sea soltero y su tipo de sangre
sea 0+ y su fecha de nacimiento sea superior al año 1993
USE ESTUDIANTESINNT
GO
SELECT ESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ESTUDIANTE.fechaNacimiento,
ESTADOCIVIL.estadocivil, TIPOSANGRE.tipoSangre
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTE.fk_estadocivilId)
JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = TIPOSANGRE.pk_tipoSangre
WHERE ESTADOCIVIL.pk_estadocivilId = 1 and TIPOSANGRE.pk_tipoSangre = 7 and
ESTUDIANTE.fechaNacimiento > '1993'
16
Realizar un query que permita tener un reporte que contenga, nombre completos
y numero de cedula de todos los estudiantes cuyo correo electrónico sea de Gmail,
y el numero de celular empiece con 099
USE ESTUDIANTESINNT
GO
SELECTESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ESTUDIANTE.correoElectronico,
ESTUDIANTE.numeroCelular
FROM ESTUDIANTE
WHERE ESTUDIANTE.numeroCelular like '099%' and ESTUDIANTE.correoElectronico like
'%gmail%'
17
CONJUNTOS
USE ESTUDIANTESNTBD
GO
SELECT primerNombre,fk_discapacidad
FROM ESTUDIANTE
WHERE fk_tipoDiscapacidad < '7'
18
DEBER 23/07/2018
USE ESTUDIANTESNTBD
GO
SELECT count (numeroIdentificacion)
FROM ESTUDIANTE
WHERE numeroIdentificacion like '%0'
_____________________________________________________
USE ESTUDIANTESNTBD
GO
SELECT (numeroIdentificacion)
FROM ESTUDIANTE
WHERE numeroIdentificacion like '%0'
19
Contar el número de estudiantes de sexo femenino cuyo correo electrónico sea de Yahoo!
USE ESTUDIANTESNTBD
GO
SELECT count (fk_sexoId) as sexo, count (correoElectronico) as correo
FROM ESTUDIANTE
WHERE fk_sexoId = 2 and correoElectronico like '%yahoo%'
USE ESTUDIANTESNTBD
GO
SELECT fk_sexoId, correoElectronico
FROM ESTUDIANTE
WHERE fk_sexoId = 2 and correoElectronico like '%yahoo%'
20
Sumar todos lo padres de familia cuyo nivel de formación sea superior a universitaria.
USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as Nombre, sum (fk_nivelFormacionPadre) as
NivelFormacionPadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionPadre = 8
_______________________________________________________________
USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as Nombre, count (fk_nivelFormacionPadre) as
NivelFormacionPadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionPadre = 8
__________________________________________________________________
USE ESTUDIANTESNTBD
GO
SELECT primerNombre as Nombre, fk_nivelFormacionPadre as NivelFormacionPadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionPadre = 8
21
4. Sumar todas las madres de familia cuyo nivel de formación sea primaria
USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as Nombre, count (fk_nivelFormacionMadre) as
NivelFormacionMadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionMadre = 3
_____________________________________________
USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as NumerodeMAdres, sum (fk_nivelFormacionMadre) as
Sumax3
FROM ESTUDIANTE
WHERE fk_nivelFormacionMadre = 3
_______________________________________________
USE ESTUDIANTESNTBD
GO
SELECT primerNombre as Nombre, fk_nivelFormacionMadre as NivelFormacionMadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionMadre = 3
22
5. Calcular el promedio de los ingresos familiares de los estudiantes de sexo masculino
cuyo tipo de sangre sea A+
USE ESTUDIANTESNTBD
GO
SELECT AVG (ingresoTotalHogar) as IngresosFamiliares
FROM ESTUDIANTE
WHERE fk_sexoId = 1 and fk_tipoSangre = 1
23
6. Preparar un reporte que muestre los siguientes datos, nombres completos, numero de
cedula, nivel académico que cursa, sexo, teléfono, paralelo, tipo del colegio al que
pertenece de todos los estudiantes cuyo ingreso familiar sea inferior a 400 dólares, su
estado civil sea soltero, y pertenezcan a un hogar cuyo total de miembros del hogar no
supere a las 5 personas. Al final se debe mostrar el número total de estudiantes incluidos
en el reporte.
USE ESTUDIANTESNTBD
GO
SELECT primerNombre, primerApellido, segundoNombre, segundoApellido,
numeroIdentificacion, nivelacademico, sexo,numeroCelular,
paralelo,fk_tipoColegioId,cantidadMiembrosHogar,ingresoTotalHogar,
fk_estadocivilId
FROM (ESTUDIANTE JOIN NIVELACADEMICO
ON pk_nivelAcademicoQueCursa=fk_nivelAcademicoQueCursa)
JOIN SEXO
ON pk_sexoId=fk_sexoId
JOIN PARALELO
ON pk_paraleloId=fk_paraleloId
JOIN TIPOSANGRE
ON pk_tipoSangre=fk_tipoSangre
24
PRUEBA
25/07/2018
USE ESTUDIANTESNTBD
GO
SELECT count (*) as TOTAL --numeroIdentificacion as total primerApellido,
primerNombre, estadocivil,fechaNacimiento, nivelacademico, correoElectronico
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON pk_estadocivilId = fk_estadocivilId
JOIN NIVELACADEMICO
ON pk_nivelAcademicoQueCursa = fk_nivelAcademicoQueCursa)
WHERE fechaNacimiento BETWEEN '1997-01-01' AND '2004-12-12'
25
EXAMEN 30/07/2018
USE ESTUDIANTESNT
GO
SELECT primerNombre, segundoNombre, primerApellido, segundoApellido,
numeroIdentificacion, numeroCelular, correoElectronico, estadocivil, etnia,
ingresoTotalHogar--, cantidadMiembrosHogar, fk_nivelFormacionMadre
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON pk_estadocivilId = fk_estadocivilId
JOIN ETNIA
ON pk_etniaId = fk_etniaId)
--JOIN NIVELFORMACION
--ON pk_nivelFormacion = fk_nivelFormacionMadre)
WHERE ingresoTotalHogar < '700' and cantidadMiembrosHogar < '5' and
fk_nivelFormacionMadre > '3'
26
Sintaxis:
Ejemplo:
USE ESTUDIANTESNT2607018
GO
SELECT primerApellido, primerNombre, fechaNacimiento
FROM ESTUDIANTE
--WHERE fechaNacimiento > '01/01/1990'
ORDER BY fechaNacimiento DESC
27
AGRUPACIÓN DE DATOS
Permite agrupar FILAS según las columnas (con los campos o atributos) que se indiquen como
parámetros se debe considerar que CUANDO SE AGRUPAN SOLO SE PUEDEN
SELECCIONAR LOS CAMPOS AGRUPADOS.
Sintaxis
GROUP BY Parámetro
USE ESTUDIANTESNT2607018
GO
SELECT fk_nivelAcademicoQueCursa, primerApellido
FROM ESTUDIANTE
--WHERE fechaNacimiento > '01/01/1990'
GROUP BY fk_nivelAcademicoQueCursa, primerApellido
Ejemplo 2
USE ESTUDIANTESNT2607018
GO
SELECT SEXO, Sexo, COUNT (Sexo.sexo) AS TOTAL
FROM ESTUDIANTE JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTE. fk_sexoId
GROUP BY SEXO.sexo
28
DEBER
Realizar un query que me permita mostrar etnia, estado civil, nivel académico, con un
total.
Ejercicio:
Realizar un query que permita contar el numero de estudiantes:
Tanto mujeres como hombres, especificando el nivel académico al que pertenece y su
estado civil de los estudiantes cuyo apellido empiece con A
USE ESTUDIANTESNT2607018
GO
SELECT ESTUDIANTE.primerApellido, NIVELACADEMICO.nivelacademico,
ESTADOCIVIL.estadocivil, COUNT (*) AS TOTAL
FROM (ESTUDIANTE JOIN SEXO
ON pk_sexoId = fk_sexoId)
JOIN ESTADOCIVIL
ON pk_estadocivilId = pk_estadocivilId
JOIN NIVELACADEMICO
ON pk_nivelAcademicoQueCursa = fk_nivelAcademicoQueCursa
WHERE primerApellido like 'A%'
GROUP BY SEXO.sexo, NIVELACADEMICO.nivelacademico, primerApellido, estadocivil
29
PROGRAMACION TRANSACKT SQL 20/08/2018
Variables: (Es un lugar donde yo guardo temporalmente un dato) Es una entidad a la que se
asigna un valor y este valor puede cambiar durante el proceso, donde se utiliza la variable,
generalmente en SQL (Lenguaje estructurado de Elementos) se usa dos tipos de variable:
1. Locales.
Son definidas por el usuario. Las variables locales se declaran a través de un nombre y se define
usando la palabra reservada y reciben un valor inicial mediante la instrucción, SELECT o SET.
A cada variable local se le debe asignar un tipo de dato. (Definida por el usuario)
Sintaxis:
Sentencias de Control
IF
FOR
WHILE
CASE
30
2. Globales.
Son suministradas por el sistema y están predefinidas por el sistema, estas son:
USE ESTUDIANTESNT2607018
GO
--PRINT 'El nombre de esta base de datos es:' + @@SERVERNAME
--PRINT 'El lenguaje de este motor de base de datos es:' + @@LANGUAGE
--PRINT 'La versión de este motor de base de datos es:' + @@VERSION
--PRINT 'El número de conexiones permitidas es:' + STR (@@MAX_CONNECTIONS)
PRINT 'El número de conexiones permitidas es:' + STR (@@IDENTITY)
SINTAXIS
IF (Condicion_Evaluacion)
BEGIN
--
--
--
END
ELSE
BEGIN
--
--
--
END
Instrucciones en lotes.
Instrucciones en procedimientos almacenados.
31
Ejemplo 22/08/2018
Realizar un query que permita verificar si un estudiante se encuentra matriculado, en tal caso se
debe promover a ese estudiante a nivel superior, caso contrario debo removerle al nivel inferior.
USE ESTUDIANTESNT
DECLARE @CEDULA VARCHAR(15)
SET @CEDULA='1723973713'
IF EXISTS (SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,fk
_nivelAcademicoQueCursa --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTE
WHERE numeroIdentificacion=@CEDULA)
BEGIN
SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,fk
_nivelAcademicoQueCursa
FROM ESTUDIANTE
WHERE numeroIdentificacion=@CEDULA
END
ELSE
BEGIN
--SELECT *from ESTUDIANTE
--END
INSERT INTO ESTUDIANTE
32
DEBER 27/08/2018
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.
USE ESTUDIANTESNT
GO
DECLARE @primerNOmbre VARCHAR (10)
SET @primerNOmbre = 'MARIA'
IF EXISTS (SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT
WHERE ESTUDIANTESINT.primerNombre = @primerNOmbre)
BEGIN
SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT
WHERE ESTUDIANTESINT.primerNombre = @primerNOmbre
END
ELSE
BEGIN
SELECT * FROM ESTUDIANTESINT
END
33
Realizar un query (usando la sentencia IF), que permita. Contar los registros de todos
los estudiantes si los estudiantes pertenecen a primer nivel.
USE ESTUDIANTESNT
GO
DECLARE @primerNIvel VARCHAR (10)
SET @primerNIvel = 'PRIMERO'
IF EXISTS (SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
WHERE NIVELACADEMICO.nivelacademico = @primerNIvel)
BEGIN
SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
WHERE NIVELACADEMICO.nivelacademico = @primerNIvel
END
ELSE
BEGIN
SELECT * FROM ESTUDIANTESINT
END
Realizar un query que permita. Contar los registros de todos los estudiantes nacidos en
la provincia diferente a la provincia de pichincha.
Realizar un query que permita. Contar los registros de todos los estudiantes nacidos en
el canton de Cayambe.
34
5.- Realizar un query que permita. Mostrar los siguientes datos agrupados por escuela:
Número de cédula
Sexo
Fecha de nacimiento
Cantón de nacimiento
USE ESTUDIANTESNT
GO
SELECT primerNombre, segundoNombre, primerApellido, segundoApellido,
numeroIdentificacion, SEXO, CANTON, CARRERA, count (*) AS TOTAL
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_cantonNacimientoId)
GROUP BY CARRERA, primerNombre, segundoNombre, primerApellido, segundoApellido,
numeroIdentificacion, SEXO, CANTON
Prueba 27/08/2018
Realizar un query que permita mostrar los siguientes datos (no códigos sino las palabras).
Número de identificación
Primer Nombre
Segundo Nombre
Primer Apellido
Segundo Apellido
Tipo de Sangre
Sexo
Fecha de Nacimiento
35
USE ESTUDIANTESNT
GO
--DECLARE @CEDULA VARCHAR(15)
--SET @CEDULA
IF EXISTS ((SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,
TIPOSANGRE, SEXO, fechaNacimiento --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTESINT JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = ESTUDIANTESINT.fk_tipoSangre
JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId
WHERE numeroIdentificacion like '%1'or numeroIdentificacion like '%2' ))
ELSE
BEGIN
TALLER
Considerando:
1. Si nació el primer día del mes se debe contar cuantos estudiantes son mujeres y cuantos
estudiantes hombres.
2. Si Nació el ultimo día del mes se debe sumar todos los ingresos familiares de las mujeres.
36
3. Si su fecha de matricula es entre 5 y el 10 de cada mes se debe contar cuantos solteros
existen.
USE ESTUDIANTESNT
GO
--DECLARE @CEDULA VARCHAR(15)
--SET @CEDULA
IF EXISTS ((SELECT primerNombre,segundoNombre,primerApellido,segundoApellido,
numeroIdentificacion, GENERO, ETNIA, NIVELACADEMICO, fechaMatricula--,
fechaMatricula --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTESINT JOIN GENERO
ON GENERO.pk_generoId = ESTUDIANTESINT.fk_generoId
JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTESINT.fk_etniaId
JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId
WHERE ESTUDIANTESINT.fechaMatricula between '2018-05-05' and '2018-05-10')) --
BETWEEN ESTUDIANTESINT.fechaMatricula ='10/05/2018' ))
--GROUP BY pk_estadocivilId))
ON GENERO.pk_generoId = ESTUDIANTESINT.fk_generoId
JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTESINT.fk_etniaId
JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId
WHERE ESTUDIANTESINT.fechaMatricula between '2018-05-05' and '2018-05-10')) --
BETWEEN ESTUDIANTESINT.fechaMatricula ='10/05/2018' ))
--GROUP BY pk_estadocivilId, primerApellido))
--PRINT'su dia de matricula es lunes'
END
ELSE
BEGIN
37
USE ESTUDIANTESNT
GO
SELECT (count (pk_estadocivilId))as total,
primerNombre,segundoNombre,primerApellido,segundoApellido, numeroIdentificacion,
GENERO, ETNIA, NIVELACADEMICO, fechaMatricula--, fechaMatricula --ARMAMOS LA
CONDICION DEL IF
FROM ESTUDIANTESINT JOIN GENERO
ON GENERO.pk_generoId = ESTUDIANTESINT.fk_generoId
JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTESINT.fk_etniaIdJOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId
WHERE ESTUDIANTESINT.fechaMatricula between '2018-05-05' and '2018-05-10'
GROUP BY pk_estadocivilId,
primerNombre,segundoNombre,primerApellido,segundoApellido, numeroIdentificacion,
GENERO, ETNIA, NIVELACADEMICO, fechaMatricula
38
CASE 05/09/2018
Es una sentencia de control que permite interactuar el resultado de SQL luego de lo cual
evaluamos un resultado.
SINTAXIS
CASE (Condition - Evaluation)
WHEN Valor_Ejecuto THEN Valor_Resultado
WHEN Valor_Ejecuto y devolver el siguiente THEN Valor_Resultado
:
:
ELSE
VALOR por defecto
END
Ejercicio;
Realizar un Query que permita mostrar los paralelos según el siguiente esquema para el paralelo
A debe mostrar: primer paralelo, para el paralelo B: Debe mostrar segundo paralelo, y así hasta
el séptimo paralelo.
USE ESTUDIANTESNT
GO
SELECT CASE PARALELO.paralelo
WHEN 'A' THEN 'PRIMERO'
WHEN 'B' THEN 'SEGUNDO'
WHEN 'C' THEN 'TERECERO'
WHEN 'D' THEN 'CUARTO'
WHEN 'E' THEN 'QUINTO'
WHEN 'F' THEN 'SEXTO'
WHEN 'G' THEN 'SEPTIMO'
39
Ejercicio 2
Realizar un query que me permita mostrar los siguientes datos:
Nombre 1, Nombre2, Apellido1, Apellido2, Ingreso total del hogar, de todos los estudiantes según
el siguiente esquema:
Para los alumnos con bajos recursos económicos se considerara un ingreso entre 0$ y 100$, para
los alumnos con recursos económicos medios, se considerara un ingreso entre 101$ y 600$, y
para los alumnos con recursos económicos altos, se considerar un ingreso entres 601$ y 2000$
muestre un reporte con lo antes mencionado utilizando el CASE, considere que si los ingresos
son superiores a los 1000$ se debe considerar, recursos económicos superiores.
USE ESTUDIANTESNT23082018
GO
SELECT primerNombre, segundoNombre, primerApellido, segundoApellido,
ingresoTotalHogar
case
WHEN ingresoTotalHogar between 0 and 100 THEN 'bajo'
WHEN ingresoTotalHogar between 101 and 600 THEN 'medio'
WHEN ingresoTotalHogar between 601 and 200 THEN 'Alto'
ELSE 'Superior'
END
FROM ESTUDIANTESINT
DEBER 24/09/2018
USE ESTUDIANTESNT10092018
GO
--Realizar una función que permita mostrar un reporte de todos los estudiantes
del Nelson Torres que hayan nacido en una provincia diferente a Pichincha, para
lo cual el reporte debe mostrar:
--Nombres completos del estudiante
--Número de cédula
--Fecha de Nacimiento
--Semestre y Paralelo en el que estudia
--Correo electrónico
--Número de Teléfono
40
--Realizar una función que permita mostrar un reporte de los estudiantes del
Nelson Torres de la Carrera de Análisis de Sistemas
-- (el dato de la carrera se lo debe pasar como parámetro), para lo cual el
reporte debe mostrar:
--Nombres completos del estudiante
--Número de cédula
--Fecha de Nacimiento
--Tipo de sangre
--Tipo de colegio
--Estado Civil
CREATE PROCEDURE GB(@CARERA VARCHAR(50))
AS
SELECT
E.primerNombre,E.segundoNombre,E.primerApellido,E.segundoApellido,E.numeroIdentif
icacion,E.fechaNacimiento,E.fk_tipoSangre,E.fk_estadocivilId,C.carrera
FROM ESTUDIANTESINT E JOIN CARRERAS C
ON E.fk_carreraid=C.pk_carreraid
WHERE carrera= @CARERA
EXEC GB 'ANALISIS DE SISTEMAS'
--OPCION 2
--Realizar una función que permita insertar un nuevo nivel académico (usando al
menos un parámetro).
---OPCION 2
41
CREATE FUNCTION NUEV()
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @NIVEL VARCHAR(50)
SET @NIVEL ='OCTAVO'
RETURN @NIVEL
END
GO
------ACTUALIZAR
use ESTUDIANTESNT
go
--5. Con base en el ejercicio anterior, realizar una función que permita borrar
el nivel actualizado
-- (en el ejercicio anterior) usando al menos un parámetro.
use ESTUDIANTESNT
CREATE PROCEDURE ELIMINA
@nivelacademico as varchar(50)
As
DELETE FROM NIVELACADEMICO
WHERE nivelacademico=@nivelacademico
exec ELIMINA'SEPTIMO'
42
Taller 24/09/2018
USE ESTUDIANTESNT10092018
GO
CREATE FUNCTION taller (@DATO VARCHAR(30))
RETURNS TABLE
AS
RETURN SELECT ESTUDIANTESINT.primerNombre, ESTUDIANTESINT.primerApellido,
ESTUDIANTESINT.numeroIdentificacion, SEXO.sexo, PROVINCIA.provincia,
CANTON.canton, TIPOSANGRE.tipoSangre
FROM (ESTUDIANTESINT JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId
JOIN PROVINCIA
ON PROVINCIA.pk_provinciaNacimientoId =
ESTUDIANTESINT.fk_provinciaNacimientoId
JOIN CANTON
ON CANTON.pk_cantonId = ESTUDIANTESINT.fk_cantonNacimientoId)
JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = ESTUDIANTESINT.fk_tipoSangre
WHERE TIPOSANGRE.tipoSangre = @DATO AND CANTON.canton = 'CAYAMBE'
GO
SELECT * FROM DBO.taller('B+')
43