Contenido del curso
Contenido del curso
José Bernardo Navas Pleitez
Rubens A. Rangel Gomez
Daniel Alejandro Urbina Gonzalez
jefred bedoya
Pablo Núñez
Comparto codigod elas tres vistas propuestas VW_VentasPorPais, VWProductosTopVentas y VW_ClinetesSinPedidos
CREATE VIEW VW_VentasPorPais AS WITH Ventas AS ( SELECT pa.NombrePais AS Pais, YEAR(p.FechaPedido) AS Anio, MONTH(p.FechaPedido) AS Mes, p.Total FROM Pedidos p INNER JOIN Clientes c ON p.ClienteID = c.ClienteID INNER JOIN Paises pa ON c.PaisID = pa.PaisID ) SELECT Pais, Anio, Mes, SUM(Total) AS VentasTotales FROM Ventas GROUP BY Pais, Anio, Mes; GO
- Top 20 productos con mayor cantidad vendida CREATE VIEW VW_ProductosTopVentas AS WITH VentasProducto AS ( SELECT pr.ProductoID, pr.NombreProducto, dp.Cantidad FROM DetallePedidos dp INNER JOIN Productos pr ON dp.ProductoID = pr.ProductoID ) SELECT TOP 20 ProductoID, NombreProducto, SUM(Cantidad) AS TotalUnidadesVendidas FROM VentasProducto GROUP BY ProductoID, NombreProducto ORDER BY TotalUnidadesVendidas DESC; GO
-- Clientes que nunca han hecho pedidos CREATE VIEW VW_ClientesSinPedidos AS WITH ClientesConPedidos AS ( SELECT DISTINCT ClienteID FROM Pedidos ) SELECT c.ClienteID, c.Nombre, c.Apellido FROM Clientes c LEFT JOIN ClientesConPedidos cp ON c.ClienteID = cp.ClienteID WHERE cp.ClienteID IS NULL; GO
Una forma sencilla de entender una vista en SQL es compararla con una arrow function de JavaScript. Ambas encapsulan lógica que puede reutilizarse sin necesidad de reescribirla cada vez. La diferencia es que una vista solo guarda una consulta SELECT y devuelve datos cuando se consulta, mientras que una función en JavaScript puede recibir parámetros y ejecutar lógica más compleja. Aun así, la idea es similar: reutilizar lógica para hacer el código más limpio, modular y fácil de mantener.
Top 20 products
CREATE VIEW VW_TOP20Products AS
SELECT p.nombreproducto,
SUM(cantidad) as CantidadVendida,
TO_CHAR(SUM(dp.cantidad * dp.preciounitario), '$FM999,999,990.00') as VentaTotal
FROM detalle_pedidos as dp
JOIN productos as p on p.productoid = dp.productoid
GROUP BY p.nombreproducto
ORDER BY SUM(dp.cantidad * dp.preciounitario) DESC
LIMIT 20;
--------------------
Cliente sin pedidos
CREATE VIEW VW_ClienteSinPedido AS
(
SELECT c.clienteid, c.nombre || ' ' || c.apellido as nombre
FROM clientes as c
LEFT JOIN pedidos as p on p.clienteid = c.clienteid
where p.pedidoid is null
order by c.clienteid
)
Las vistas funcionan como tablas virtuales que encapsulan consultas complejas, permitiendo reutilizar lógica sin repetir código. Son herramientas de abstracción que simplifican el acceso a los datos y fortalecen la seguridad al ocultar columnas sensibles.
Al tratar una vista como una tabla estándar, facilitas el mantenimiento y garantizas que los usuarios finales interactúen solo con la información necesaria, protegiendo la integridad del esquema original.
hace tiempo mantengo vistas Pero desconocía del sp_helptext. excelente para documentación. excelente aporte!