Título: Clientes que hayan realizado más de 5 órdenes por año [DB Northwind]
Publicado por: S4ms3pi0l__ en 6 Abril 2019, 04:42 am
Tengo el siguiente problema: Seleccionar a todos los clientes que hayan realizado más de 5 órdenes por año. Presentar el detalle de las cantidad por año. Ordenar por año. Esto es lo que yo hice y que no sé si está correcto: ALTER PROCEDURE SP_TopClientes AS CREATE TABLE #HistorialCantidad( --IdHistorial int primary key identity(0,1), Nombre VARCHAR(100), Año INT, Cantidad INT ) CREATE TABLE #Año( Id INT PRIMARY KEY IDENTITY(0,1), Año INT ) INSERT INTO #Año SELECT DISTINCT YEAR(OrderDate) FROM Orders DECLARE @Contador INT SET @Contador = 0 WHILE(@Contador < (SELECT COUNT(*) FROM #Año)) BEGIN INSERT INTO #HistorialCantidad SELECT DISTINCT TOP 5 c.CompanyName AS [Nombre Compañía], YEAR(o.OrderDate) AS Año, COUNT(*) AS Cantidad FROM [ORDER Details] od INNER JOIN Orders o ON o.OrderID = od.OrderID INNER JOIN Customers c ON c.CustomerID = o.CustomerID WHERE YEAR(o.OrderDate) = (SELECT Año FROM #Año WHERE Id = @Contador) GROUP BY c.CompanyName, YEAR(o.OrderDate) ORDER BY Cantidad DESC SET @Contador = @Contador+1 END SELECT * FROM #HistorialCantidad ORDER BY Año, Cantidad DROP TABLE #HistorialCantidad DROP TABLE #Año
Espero puedan ayudarme.
Título: Re: Clientes que hayan realizado más de 5 órdenes por año [DB Northwind]
Publicado por: EdePC en 7 Abril 2019, 03:38 am
Saludos, - Yo lo estoy entendiendo así: -- Seleccionar a todos los clientes que hayan realizado más de 5 órdenes por año. -- Presentar el detalle de las cantidad por año. Ordenar por año SELECT CustomerID, YEAR(OrderDate) AS Año, COUNT(OrderID) AS Cantidad FROM Orders GROUP BY YEAR(OrderDate), CustomerID HAVING COUNT(OrderID) > 5 ORDER BY Año
+------------+------+----------+ | CustomerID | Año | Cantidad | +------------+------+----------+ | ERNSH | 1996 | 6 | | QUICK | 1996 | 6 | | RATTC | 1996 | 6 | | AROUT | 1997 | 7 | | BERGS | 1997 | 10 | | BLONP | 1997 | 7 | | BONAP | 1997 | 8 | | BSBEV | 1997 | 6 | | ERNSH | 1997 | 15 | | FOLKO | 1997 | 7 | | FRANK | 1997 | 8 | | GOURL | 1997 | 7 | | GREAL | 1997 | 6 | | HILAA | 1997 | 10 | | HUNGO | 1997 | 10 | | KOENE | 1997 | 8 | | LAMAI | 1997 | 8 | | LEHMS | 1997 | 8 | | MEREP | 1997 | 10 | | OTTIK | 1997 | 6 | | PICCO | 1997 | 6 | | QUEEN | 1997 | 7 | | QUICK | 1997 | 14 | | RATTC | 1997 | 6 | | REGGC | 1997 | 6 | | SAVEA | 1997 | 17 | | VAFFE | 1997 | 6 | | WARTH | 1997 | 10 | | WHITC | 1997 | 8 | | BONAP | 1998 | 6 | | BOTTM | 1998 | 8 | | ERNSH | 1998 | 9 | | FOLKO | 1998 | 9 | | GODOS | 1998 | 7 | | HANAR | 1998 | 7 | | HILAA | 1998 | 6 | | LINOD | 1998 | 7 | | QUICK | 1998 | 8 | | RATTC | 1998 | 6 | | SAVEA | 1998 | 11 | | SUPRD | 1998 | 6 | +------------+------+----------+
Título: Re: Clientes que hayan realizado más de 5 órdenes por año [DB Northwind]
Publicado por: S4ms3pi0l__ en 7 Abril 2019, 22:41 pm
Saludos, - Yo lo estoy entendiendo así: -- Seleccionar a todos los clientes que hayan realizado más de 5 órdenes por año. -- Presentar el detalle de las cantidad por año. Ordenar por año SELECT CustomerID, YEAR(OrderDate) AS Año, COUNT(OrderID) AS Cantidad FROM Orders GROUP BY YEAR(OrderDate), CustomerID HAVING COUNT(OrderID) > 5 ORDER BY Año
+------------+------+----------+ | CustomerID | Año | Cantidad | +------------+------+----------+ | ERNSH | 1996 | 6 | | QUICK | 1996 | 6 | | RATTC | 1996 | 6 | | AROUT | 1997 | 7 | | BERGS | 1997 | 10 | | BLONP | 1997 | 7 | | BONAP | 1997 | 8 | | BSBEV | 1997 | 6 | | ERNSH | 1997 | 15 | | FOLKO | 1997 | 7 | | FRANK | 1997 | 8 | | GOURL | 1997 | 7 | | GREAL | 1997 | 6 | | HILAA | 1997 | 10 | | HUNGO | 1997 | 10 | | KOENE | 1997 | 8 | | LAMAI | 1997 | 8 | | LEHMS | 1997 | 8 | | MEREP | 1997 | 10 | | OTTIK | 1997 | 6 | | PICCO | 1997 | 6 | | QUEEN | 1997 | 7 | | QUICK | 1997 | 14 | | RATTC | 1997 | 6 | | REGGC | 1997 | 6 | | SAVEA | 1997 | 17 | | VAFFE | 1997 | 6 | | WARTH | 1997 | 10 | | WHITC | 1997 | 8 | | BONAP | 1998 | 6 | | BOTTM | 1998 | 8 | | ERNSH | 1998 | 9 | | FOLKO | 1998 | 9 | | GODOS | 1998 | 7 | | HANAR | 1998 | 7 | | HILAA | 1998 | 6 | | LINOD | 1998 | 7 | | QUICK | 1998 | 8 | | RATTC | 1998 | 6 | | SAVEA | 1998 | 11 | | SUPRD | 1998 | 6 | +------------+------+----------+ Sí, está perfecto. Al final, creo que, lo terminaste simplificando. Muchas gracias por tu ayuda ;D
|