Header Ads Widget

Responsive Advertisement

Ticker

6/recent/ticker-posts

Bases de datos , sistema de ventas



-- Creación de la base de datos

CREATE DATABASE VENTAS_1;


USE VENTAS_1;


-- Creación de tablas

CREATE TABLE Clientes (

    ClienteID INT PRIMARY KEY IDENTITY(1, 1),

    Nombre VARCHAR(100) NOT NULL,

    Direccion VARCHAR(200),

    Telefono VARCHAR(15),

    Email VARCHAR(100)

);

CREATE TABLE Productos (

    ProductoID INT PRIMARY KEY IDENTITY(1, 1),

    Nombre VARCHAR(100) NOT NULL,

    Descripcion TEXT,

    Precio DECIMAL(10, 2) NOT NULL,

    Stock INT NOT NULL

);

CREATE TABLE Ventas (

    VentaID INT PRIMARY KEY IDENTITY(1, 1),

    ClienteID INT,

    FechaVenta DATETIME NOT NULL DEFAULT GETDATE(),

    Total DECIMAL(10, 2) NOT NULL,

    FOREIGN KEY (ClienteID) REFERENCES Clientes(ClienteID) ON DELETE CASCADE

);

CREATE TABLE DetallesVenta (

    DetalleID INT PRIMARY KEY IDENTITY(1, 1),

    VentaID INT,

    ProductoID INT,

    Cantidad INT NOT NULL,

    PrecioUnitario DECIMAL(10, 2) NOT NULL,

    Subtotal AS (Cantidad * PrecioUnitario) PERSISTED,

    FOREIGN KEY (VentaID) REFERENCES Ventas(VentaID) ON DELETE CASCADE,

    FOREIGN KEY (ProductoID) REFERENCES Productos(ProductoID) ON DELETE CASCADE

);

-- Insertar datos en Clientes

INSERT INTO Clientes (Nombre, Direccion, Telefono, Email) VALUES

('Alex Martinez', 'Calle S44-D', '45-545', 'alex.martinez@gmail.com'),

('Carla Romano', 'Pasaje B54-32', '11-S2', 'carla.romano@gmail.com'),

('Priscila Jativa', 'Felix león de Tijuana', '233-222', 'priscila.jativa@hotmail.com');


-- Insertar datos en Productos

INSERT INTO Productos (Nombre, Descripcion, Precio, Stock) VALUES

('Teléfono REDMI', 'Pantalla 1980 x 720 píxeles, color negro', 1400.00, 10),

('CPU Gamer INTEL', 'Procesador Core i8, 1 TB de almacenamiento, color rojo', 1250.00, 10),

('Computadora de escritorio', 'Procesador Core i8, 1 TB de almacenamiento', 500.00, 20);


-- Insertar datos en Ventas

INSERT INTO Ventas (ClienteID, Total) VALUES

(1, 1900.00),

(2, 1250.00),

(3, 500.00);


-- Insertar datos en DetallesVenta

INSERT INTO DetallesVenta (VentaID, ProductoID, Cantidad, PrecioUnitario) VALUES

(1, 1, 1, 1400.00), 

(1, 2, 1, 500.00),  

(2, 2, 1, 1250.00),

(3, 3, 1, 500.00);


--Queremos saber acerca de producto

--Nivel 1 ,venta por mes y producto

SELECT 

    FORMAT(V.FechaVenta, 'yyyy-MM') AS Mes,

    P.Nombre AS Producto,

    SUM(DV.Cantidad) AS CantidadVendida,

    SUM(DV.Subtotal) AS TotalGenerado

FROM DetallesVenta DV

JOIN Ventas V ON DV.VentaID = V.VentaID

JOIN Productos P ON DV.ProductoID = P.ProductoID

GROUP BY FORMAT(V.FechaVenta, 'yyyy-MM'), P.Nombre

ORDER BY Mes DESC, TotalGenerado DESC;


--Nivel 2 , cliente y producto vendido

SELECT 

    C.Nombre AS Cliente,

    P.Nombre AS Producto,

    SUM(DV.Cantidad) AS CantidadComprada,

    SUM(DV.Subtotal) AS TotalGastado

FROM Ventas V

JOIN Clientes C ON V.ClienteID = C.ClienteID

JOIN DetallesVenta DV ON V.VentaID = DV.VentaID

JOIN Productos P ON DV.ProductoID = P.ProductoID

GROUP BY C.Nombre, P.Nombre

ORDER BY C.Nombre, TotalGastado DESC;