Practica 02
Practica 02
Practica 02
2.- Muestre todos los propietarios cuyo nombre empiece con C que tengan un auto color
Azul y sean de la marca NISSAN
--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
--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
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'
9.- .Pasando un año, Mostrar las cantidades de papeletas y el total monto por cada mes
(en letras) (1.5 puntos)
-- 9
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
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
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
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
WHILE @@FETCH_STATUS = 0
BEGIN
END
CLOSE cursor_1
DEALLOCATE cursor_1
end