Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Producto más vendido por mes

Estas en el tema de Producto más vendido por mes en el foro de SQL Server en Foros del Web. Hola amigos. No he logrado resolver una consulta. Necesito mostrar el producto más vendido por mes (todos los años) , lo más que he logrado ...
  #1 (permalink)  
Antiguo 21/10/2014, 00:18
Avatar de charlybinn  
Fecha de Ingreso: abril-2013
Ubicación: Sonora, Mex.
Mensajes: 26
Antigüedad: 11 años
Puntos: 1
Pregunta Producto más vendido por mes

Hola amigos.
No he logrado resolver una consulta. Necesito mostrar el producto más vendido por mes (todos los años) , lo más que he logrado es mostrar los productos y la cantidad vendidos por mes, sin embargo quisiera saber como hacer para "el más vendido"

Algo así:

----------------------------
Enero --- Prod1
Febrero --- Prod20
Marzo ---- Prod 13
...
...
----------------------------

También quisiera saber como hacer un TOP 5 de los productos más vendidos por año por cada año diferente, es decir

----------------------------
2010 --- Prod1
2010 --- Prod2
2010 --- Prod3
2010 --- Prod4
2010 --- Prod5

2011 --- Prod1
2011 --- Prod2
2011 --- Prod3
2011 --- Prod4
2011 --- Prod5
----------------------------

me explico?
estos 2 problemas me han roto la cabeza xD

Tengo poco usando SQL-server, aún no se hacer consultas complejas

NOTA: Estoy usando la DB Northwind



PD: Esté tema es el "bueno" no se porque se puso 2 veces. Disculpen las molestias.
  #2 (permalink)  
Antiguo 21/10/2014, 07:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Producto más vendido por mes

Código SQL:
Ver original
  1. SELECT MAX(producto_vendido), YEAR FROM tabla GROUP BY YEAR
  2.  
  3. SELECT top 5 MAX(producto_vendido), YEAR,producto FROM tabla GROUP BY YEAR,producto
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/10/2014, 08:51
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Producto más vendido por mes

Esto es como el "a,e,i,o,u" de la primaria, ¿no?
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 21/10/2014, 08:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Producto más vendido por mes

Cita:
Iniciado por iislas Ver Mensaje
Esto es como el "a,e,i,o,u" de la primaria, ¿no?
Lo q me gusta es el concepto de "consultas complejas" :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 21/10/2014, 22:49
Avatar de charlybinn  
Fecha de Ingreso: abril-2013
Ubicación: Sonora, Mex.
Mensajes: 26
Antigüedad: 11 años
Puntos: 1
Respuesta: Producto más vendido por mes

"Esooo, burlense" ¬¬

Eso no me sirve.
Quiero hacer un TOP 5 por cada año, no los más grandes de entre todos los años, sí?

Quiero ver algo como esto:
----------------------------
2010 --- Prod1 --- 55
2010 --- Prod2 --- 40
2010 --- Prod3 --- 27
2010 --- Prod4 --- 26
2010 --- Prod5 --- 15

2011 --- Prod1 --- 102
2011 --- Prod2 --- 88
2011 --- Prod3 --- 30
2011 --- Prod4 --- 29
2011 --- Prod5 --- 25
----------------------------

¿Me explico?

En el que Libras me dice sólo me muestra los mas grandes de entre todos. Es verdad que están agrupados pero a la hora de hacer el TOP sólo me muestra los mas grandes del primer año.


Este es mi codigo (les recuerdo que uso Northwind)
Código SQL:
Ver original
  1. SELECT TOP 5 YEAR(OrderDate) AS AÑO, ProductName, SUM(Quantity) AS VecesVendido FROM Products
  2. INNER JOIN OrderDetails ON Products.ProductID = OrderDetails.ProductID
  3. INNER JOIN Orders ON Orders.OrderID =  OrderDetails.OrderID
  4. GROUP BY YEAR(OrderDate), ProductName
  5. ORDER BY AÑO, VecesVendido DESC --Acomodado de mayor a menor Por año

NOTA: Use "SUM(Quantity)" por que es el que más se vendio

Entiendan. Tengo poco tiempo haciendo esto hehe.

Última edición por charlybinn; 21/10/2014 a las 23:02 Razón: Mejor explicación.
  #6 (permalink)  
Antiguo 22/10/2014, 07:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Producto más vendido por mes

Código SQL:
Ver original
  1. SELECT * FROM(
  2. SELECT ROW_NUMBER() OVER (partition BY [AÑO] ORDER BY [AÑO]) AS rn, t1.* FROM(
  3. SELECT YEAR(OrderDate) AS AÑO, ProductName, SUM(Quantity) AS VecesVendido FROM Products
  4. INNER JOIN OrderDetails ON Products.ProductID = OrderDetails.ProductID
  5. INNER JOIN Orders ON Orders.OrderID =  OrderDetails.OrderID
  6. GROUP BY YEAR(OrderDate), ProductName
  7. ) AS t1
  8. ) AS t2 WHERE rn<=5
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:48.