0% encontró este documento útil (0 votos)
3 vistas9 páginas

Procedimientos del Parcial

El documento contiene la definición de tablas y procedimientos almacenados en SQL para gestionar un sistema de clientes, órdenes y productos. Se incluyen procedimientos para agregar clientes, consultar órdenes, obtener detalles de órdenes, y clasificar productos y órdenes por diferentes criterios. Además, se implementan consultas para calcular montos totales y clasificaciones basadas en cantidades y precios.

Cargado por

fercho18mp
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas9 páginas

Procedimientos del Parcial

El documento contiene la definición de tablas y procedimientos almacenados en SQL para gestionar un sistema de clientes, órdenes y productos. Se incluyen procedimientos para agregar clientes, consultar órdenes, obtener detalles de órdenes, y clasificar productos y órdenes por diferentes criterios. Además, se implementan consultas para calcular montos totales y clasificaciones basadas en cantidades y precios.

Cargado por

fercho18mp
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 PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Fernando Stheben Montañez Pinzón

Motores BD:
--SQL:

CREATE TABLE Clientes (


ClienteID int PRIMARY KEY IDENTITY(1,1),
Nombre nvarchar(50) NOT NULL,
Ciudad nvarchar(50) NOT NULL
);
GO

CREATE TABLE Ordenes (


OrdenID int PRIMARY KEY IDENTITY(1,1),
ClienteID int NOT NULL,
FechaOrden DATE NOT NULL,
Monto decimal(10, 2) NOT NULL,
FOREIGN KEY (ClienteID) REFERENCES Clientes(ClienteID)
);
GO

CREATE TABLE Productos (


ProductoID int PRIMARY KEY IDENTITY(1,1),
Nombre nvarchar(50) NOT NULL,
Precio decimal(10, 2) NOT NULL
);
GO

CREATE TABLE DetallesOrden (


DetalleID int PRIMARY KEY IDENTITY(1,1),
OrdenID int NOT NULL,
ProductoID int NOT NULL,
Cantidad int NOT NULL,
FOREIGN KEY (OrdenID) REFERENCES Ordenes(OrdenID),
FOREIGN KEY (ProductoID) REFERENCES Productos(ProductoID)
);
GO
--1.
CREATE PROCEDURE ObtenerTodosLosClientes
AS
BEGIN
SELECT * FROM Clientes;
END;

GO
--2.
CREATE PROCEDURE AgregarCliente
@Nombre nvarchar(50),
@Ciudad nvarchar(50)
AS
BEGIN
INSERT INTO Clientes (Nombre, Ciudad) VALUES (@Nombre, @Ciudad);
END;

GO
--3.
CREATE PROCEDURE ConsultarOrdenesPorCliente
@ClienteID int
AS
BEGIN
SELECT * FROM Ordenes WHERE ClienteID = @ClienteID;
END;

GO
--4.
CREATE PROCEDURE ObtenerDetallesDeOrden
@OrdenID int
AS
BEGIN
SELECT DO.DetalleID, P.Nombre AS NombreProducto, DO.Cantidad,
(DO.Cantidad * P.Precio) AS Total
FROM DetallesOrden DO
INNER JOIN Productos P ON DO.ProductoID = P.ProductoID
WHERE DO.OrdenID = @OrdenID;
END;

GO
--5.
CREATE PROCEDURE ActualizarMontoOrden
@OrdenID int,
@NuevoMonto decimal(10, 2)
AS
BEGIN
UPDATE Ordenes
SET Monto = @NuevoMonto
WHERE OrdenID = @OrdenID;
END;

GO
--6.
CREATE PROCEDURE ObtenerClientesYTotalOrdenes
AS
BEGIN
SELECT C.ClienteID, C.Nombre, COUNT(O.OrdenID) AS TotalOrdenes
FROM Clientes C
LEFT JOIN Ordenes O ON C.ClienteID = O.ClienteID
GROUP BY C.ClienteID, C.Nombre;
END;

GO
--7.
CREATE PROCEDURE ObtenerOrdenesYEstado
AS
BEGIN
SELECT O.OrdenID, O.FechaOrden, O.Monto,
CASE
WHEN O.Monto > 100 THEN 'Alto'
WHEN O.Monto BETWEEN 50 AND 100 THEN 'Medio'
ELSE 'Bajo'
END AS Estado
FROM Ordenes O;
END;

GO
--8.
CREATE PROCEDURE ConsultarProductosYCantidadVendida
AS
BEGIN
SELECT P.ProductoID, P.Nombre,
SUM(DO.Cantidad) AS CantidadVendida
FROM Productos P
LEFT JOIN DetallesOrden DO ON P.ProductoID = DO.ProductoID
GROUP BY P.ProductoID, P.Nombre;
END;

GO
--9.
CREATE PROCEDURE ObtenerClienteConMayorOrden
AS
BEGIN
SELECT C.ClienteID, C.Nombre, MAX(O.Monto) AS MayorMonto
FROM Clientes C
INNER JOIN Ordenes O ON C.ClienteID = O.ClienteID
GROUP BY C.ClienteID, C.Nombre;
END;

GO
--10.
CREATE PROCEDURE ConsultarOrdenesYClasificarPorFecha
AS
BEGIN
SELECT O.OrdenID, O.FechaOrden,
CASE
WHEN O.FechaOrden < DATEADD(MONTH, -1, GETDATE()) THEN 'Antigua'
ELSE 'Reciente'
END AS Clasificacion
FROM Ordenes O;
END;

GO
--11.
CREATE PROCEDURE ObtenerMontoTotalPorCliente
@ClienteID int
AS
BEGIN
SELECT SUM(O.Monto) AS MontoTotal
FROM Ordenes O
WHERE O.ClienteID = @ClienteID;
END;
GO
--12.
CREATE PROCEDURE ConsultarProductosYClasificacionPorPrecio
AS
BEGIN
SELECT P.ProductoID, P.Nombre, P.Precio,
CASE
WHEN P.Precio < 20 THEN 'Económico'
WHEN P.Precio BETWEEN 20 AND 50 THEN 'Razonable'
ELSE 'Costoso'
END AS Clasificacion
FROM Productos P;
END;

GO
--13.
CREATE PROCEDURE ObtenerClienteYProductoMasComprado
AS
BEGIN
SELECT C.ClienteID, C.Nombre, P.Nombre AS NombreProducto,
COUNT(DO.DetalleID) AS TotalCompras
FROM Clientes C
INNER JOIN Ordenes O ON C.ClienteID = O.ClienteID
INNER JOIN DetallesOrden DO ON O.OrdenID = DO.OrdenID
INNER JOIN Productos P ON DO.ProductoID = P.ProductoID
GROUP BY C.ClienteID, C.Nombre, P.Nombre
ORDER BY TotalCompras DESC;
END;

GO
--14.
CREATE PROCEDURE ConsultarOrdenesYEstadoPorMonto
AS
BEGIN
SELECT O.OrdenID, O.FechaOrden, O.Monto,
CASE
WHEN O.Monto < 50 THEN 'Pequeña'
WHEN O.Monto BETWEEN 50 AND 200 THEN 'Mediana'
ELSE 'Grande'
END AS Estado
FROM Ordenes O;
END;

GO
--15.
CREATE PROCEDURE ObtenerTotalProductosVendidosPorCliente
AS
BEGIN
SELECT C.ClienteID, C.Nombre,
SUM(DO.Cantidad) AS TotalProductosVendidos
FROM Clientes C
LEFT JOIN Ordenes O ON C.ClienteID = O.ClienteID
LEFT JOIN DetallesOrden DO ON O.OrdenID = DO.OrdenID
GROUP BY C.ClienteID, C.Nombre;
END;

GO
--16.
CREATE PROCEDURE ObtenerMontoTotalPorCiudad
@Ciudad nvarchar(50)
AS
BEGIN
SELECT SUM(O.Monto) AS MontoTotal
FROM Ordenes O
INNER JOIN Clientes C ON O.ClienteID = C.ClienteID
WHERE C.Ciudad = @Ciudad;
END;

GO
--17.
CREATE PROCEDURE ObtenerProductoMasVendidoPorFecha
@FechaInicio DATE,
@FechaFin DATE
AS
BEGIN
SELECT P.ProductoID, P.Nombre, SUM(DO.Cantidad) AS TotalVendidos
FROM Productos P
INNER JOIN DetallesOrden DO ON P.ProductoID = DO.ProductoID
INNER JOIN Ordenes O ON DO.OrdenID = O.OrdenID
WHERE O.FechaOrden BETWEEN @FechaInicio AND @FechaFin
GROUP BY P.ProductoID, P.Nombre
ORDER BY TotalVendidos DESC;
END;

GO
--18.
CREATE PROCEDURE ConsultarOrdenesYClasificarPorCantidad
AS
BEGIN
SELECT O.OrdenID, O.FechaOrden,
(SELECT COUNT(*) FROM DetallesOrden DO WHERE DO.OrdenID = O.OrdenID) AS TotalProductos,
CASE
WHEN (SELECT COUNT(*) FROM DetallesOrden DO WHERE DO.OrdenID = O.OrdenID) < 3 THEN 'Pocas'
ELSE 'Muchas'
END AS Clasificacion
FROM Ordenes O;
END;

GO
--19.
CREATE PROCEDURE ObtenerProductosYTotalVendido
AS
BEGIN
SELECT P.ProductoID, P.Nombre, P.Precio,
SUM(DO.Cantidad) AS TotalVendido
FROM Productos P
LEFT JOIN DetallesOrden DO ON P.ProductoID = DO.ProductoID
GROUP BY P.ProductoID, P.Nombre, P.Precio;
END;

GO
--20.
CREATE PROCEDURE ConsultarOrdenesYPromedioMonto
AS
BEGIN
SELECT O.OrdenID, O.FechaOrden, O.Monto,
(SELECT AVG(Monto) FROM Ordenes) AS PromedioMonto
FROM Ordenes O;
END;

GO

También podría gustarte