Practica 02

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

SEGUNDA PRACTICA DE BASE DE DATOS

Área : Ingeniería Sistemas


Profesor : Alberto Moreno Cueva
Secciones : 1625
Duración : 90 minutos
Fecha de aplicación : 27/10/2020
Hora programada : 9:45
Preguntas con sql (6 puntos)
1. marca sea hyundai, ordenados por nombre de propietario

2.- Muestre todos los propietarios cuyo nombre empiece con C que tengan un auto color
Azul y sean de la marca NISSAN

SELECT * FROM VEHICULO


WHERE NOMPRO LIKE 'C%' AND COLOR = 'AZUL' AND MODELO = 'NISSAN'
3.-Mostrar todas las infracciones del Vehiculo con Numero Placa igual a V00001

NroPap, Infdes, Infimp, PapFecha

--3
SELECT *
FROM VEHICULO A
LEFT JOIN INFRACCION B ON B.

4.- Mostrar las papeletas impuestas del Policía con código P001 y del año 2019

NroPap, Infdes, Nompro,Papfecha,InfImp

--4
SELECT A.NROPAP, B.INFDES, B.INFIMP, A.PAPFECHA
FROM PAPELETA A
INNER JOIN INFRACCION B ON B.INFCOD = A.INFCOD
WHERE
A.IDPOL = 'P001' AND
YEAR(CONVERT(DATE, A.PAPFECHA, 103)) = '2019'

5.- cantidad de papeletas impuestas por cada año y el total multa

-- 5

SELECT
YEAR(CONVERT(DATE, A.PAPFECHA, 103)) [AÑO],
COUNT(NROPAP) [CANTIDAD DE PAPELETAS],
SUM(B.INFIMP) [TOTAL MULTA]
FROM PAPELETA A
INNER JOIN INFRACCION B ON B.INFCOD = A.INFCOD
GROUP BY YEAR(CONVERT(DATE, A.PAPFECHA, 103))

6.-La cantidad de papeletas impuestas por cada policía que sean mayores a 5

-- 6
SELECT
IDPOL,
COUNT(NROPAP) [CANT. PAPELETAS IMPUESTAS]
FROM PAPELETA
GROUP BY IDPOL
HAVING COUNT(NROPAP) > 5
7.- Mostrar a todos los propietarios que no hayan tenido papeletas en el 2019.

-- 7
SELECT A.NROPLA, A.NOMPRO, A.COLOR, A.MODELO, B.NROPAP, B.PAPFECHA
FROM VEHICULO A
INNER JOIN PAPELETA B ON B.NROPLA = A.NROPLA
WHERE YEAR(CONVERT(DATE, B.PAPFECHA, 103)) = '2019'

Elabore los procedimientos almacenados:

9.- .Pasando un año, Mostrar las cantidades de papeletas y el total monto por cada mes
(en letras) (1.5 puntos)

-- 9

CREATE PROCEDURE SP_CANTPAPELETAS


@AGNO CHAR(4)
AS BEGIN

SELECT
MONTH(CONVERT(DATE, A.PAPFECHA, 103)) [MES],
COUNT(NROPAP) [CANTIDAD DE PAPELETAS],
SUM(B.INFIMP) [TOTAL MULTA] -- LETRAS

FROM PAPELETA A
INNER JOIN INFRACCION B ON B.INFCOD = A.INFCOD
WHERE YEAR(CONVERT(DATE, A.PAPFECHA, 103)) = @AGNO
GROUP BY MONTH(CONVERT(DATE, A.PAPFECHA, 103))

END

10.- Pasando un año que muestre por cada propietario la cantidad de papeletas y el total
multa por cada propietario (1.5 puntos)

-- 10

CREATE PROCEDURE SP_CANTPROPIETARIOS


@AGNO CHAR(4)
AS BEGIN

SELECT
C.NOMPRO,
COUNT(NROPAP) [CANTIDAD DE PAPELETAS],
SUM(B.INFIMP) [TOTAL MULTA] -- LETRAS

FROM PAPELETA A
INNER JOIN INFRACCION B ON B.INFCOD = A.INFCOD
INNER JOIN vehiculo C ON C.NROPLA = A.NROPLA
WHERE YEAR(CONVERT(DATE, A.PAPFECHA, 103)) = @AGNO
GROUP BY C.NOMPRO

END
Elabore las funciones:

11 .- Pasando un año y placa del automóvil devuelva el monto total de las papeletas (1.5
puntos)

-- 11
CREATE PROCEDURE SP_MONTOTOTALPAPELETAS
@AGNO CHAR(4)
@NROPLA CHAR(6)
AS BEGIN

SELECT
YEAR(CONVERT(DATE, A.PAPFECHA, 103)) [AÑO],
C.NROPLA [N° PLACA],
COUNT(NROPAP) [CANTIDAD DE PAPELETAS],
SUM(B.INFIMP) [TOTAL MULTA]

FROM PAPELETA A
INNER JOIN INFRACCION B ON B.INFCOD = A.INFCOD
INNER JOIN vehiculo C ON C.NROPLA = A.NROPLA
WHERE YEAR(CONVERT(DATE, A.PAPFECHA, 103)) = @AGNO AND C.NROPLA = @NROPLA
GROUP BY YEAR(CONVERT(DATE, A.PAPFECHA, 103)) , C.NROPLA

END
12.- pasando un anio y mes devuelva el total multa. (1.5 puntos)

-- 12
CREATE PROCEDURE SP_TOTAL_MULTAXAGNOMES
@AGNO CHAR(4),
@MES CHAR(2)
AS BEGIN

SELECT
YEAR(CONVERT(DATE, A.PAPFECHA, 103)) [AÑO],
MONTH(CONVERT(DATE, A.PAPFECHA, 103)) [MES],
SUM(B.INFIMP) [TOTAL MULTA]

FROM PAPELETA A
INNER JOIN INFRACCION B ON B.INFCOD = A.INFCOD
INNER JOIN vehiculo C ON C.NROPLA = A.NROPLA
WHERE
YEAR(CONVERT(DATE, A.PAPFECHA, 103)) = @AGNO AND
MONTH(CONVERT(DATE, A.PAPFECHA, 103)) = @MES
GROUP BY YEAR(CONVERT(DATE, A.PAPFECHA, 103)) , MONTH(CONVERT(DATE, A.PAPFECHA,
103))

END

Procedimiento almacenados: empleando cursores: (4 puntos)

13- Pasando un año que muestre por cada propietario todas sus papeletas con

Su total correspondiente

Propietario :xxxxxxxxxxxxxxxxxxx
Modelo de Auto :xxxxxxxxxxxxx
Papelta fecha motivo Importe
99999
9999
Total importe 999999

Propietario 2 xxxxxxxxxxxxxxxx
Modelo xxxxxxxxxxxxx
CREATE PROCEDURE SP_PAPELETAS_XPROPIETARIO
@AGNO CHAR(4)
AS BEGIN

--DECLARE @AGNO CHAR(4) = '2019'

DECLARE cursor_1 CURSOR FOR

SELECT
C.NOMPRO [NOMBRE DEL PROPIETARIO],
C.MODELO [MODELO DE AUTO],
A.NROPAP ,
A.PAPFECHA ,
B.INFDES,
B.INFIMP

FROM PAPELETA A
INNER JOIN INFRACCION B ON B.INFCOD = A.INFCOD
INNER JOIN vehiculo C ON C.NROPLA = A.NROPLA
WHERE
YEAR(CONVERT(DATE, A.PAPFECHA, 103)) = @AGNO

OPEN cursor_1

FETCH NEXT FROM cursor_1

WHILE @@FETCH_STATUS = 0
BEGIN

FETCH NEXT FROM cursor_1

END
CLOSE cursor_1
DEALLOCATE cursor_1

end

También podría gustarte