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

mostrar los 10 registros con mas ventas

Estas en el tema de mostrar los 10 registros con mas ventas en el foro de Mysql en Foros del Web. Buen día foro. Alguien me puede apoyar con un ejemplo o con una explicación de como puedo mostrar los 10 clientes con mayor ventas en ...
  #1 (permalink)  
Antiguo 25/04/2013, 08:30
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta mostrar los 10 registros con mas ventas

Buen día foro.

Alguien me puede apoyar con un ejemplo o con una explicación de como puedo mostrar los 10 clientes con mayor ventas en un año, se los agradecería muchísimo.
__________________
Lo imposible solo cuesta un poco mas
  #2 (permalink)  
Antiguo 25/04/2013, 08:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: mostrar los 10 registros con mas ventas

Postea lo que intentarías tu, y la estructura de la tabla.
Si no sabemos cómo determinar el año y qué hay que sumar para obtener las ventas, no podemos diseñar una consulta.
¿No te parece?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/04/2013, 08:41
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: mostrar los 10 registros con mas ventas

Si pido una disculpa se me paso postear mi consulta.

Código MySQL:
Ver original
  1. SELECT YEAR( f.fecha) anio,
  2. SUM(CASE WHEN MONTH( f.fecha ) = 1 THEN totalFactura ELSE 0 END)  Enero,
  3. SUM(CASE WHEN MONTH( f.fecha ) = 2 THEN totalFactura ELSE 0 END)  Febrero,
  4. SUM(CASE WHEN MONTH( f.fecha ) = 3 THEN totalFactura ELSE 0 END)  Marzo,
  5. SUM(CASE WHEN MONTH( f.fecha ) = 4 THEN totalFactura ELSE 0 END)  Abril,
  6. SUM(CASE WHEN MONTH( f.fecha ) = 5 THEN totalFactura ELSE 0 END)  Mayo,
  7. SUM(CASE WHEN MONTH( f.fecha ) = 6 THEN totalFactura ELSE 0 END)  Junio,
  8. SUM(CASE WHEN MONTH( f.fecha ) = 7 THEN totalFactura ELSE 0 END)  Julio,
  9. SUM(CASE WHEN MONTH( f.fecha ) = 8 THEN totalFactura ELSE 0 END)  Agosto,
  10. SUM(CASE WHEN MONTH( f.fecha ) = 9 THEN totalFactura ELSE 0 END)  Septiembre,
  11. SUM(CASE WHEN MONTH( f.fecha ) = 10 THEN totalFactura ELSE 0 END)  Octubre,
  12. SUM(CASE WHEN MONTH( f.fecha ) = 11 THEN totalFactura ELSE 0 END)  Noviembre,
  13. SUM(CASE WHEN MONTH( f.fecha ) = 12 THEN totalFactura ELSE 0 END)  Diciembre
  14. FROM factura AS f JOIN  cliente AS c ON f.clienteID = c.clienteID JOIN asociado AS a ON c.asociadoID=a.asociadoID  
  15. GROUP BY YEAR( f.fecha )

pero no se como sacar los 10 clientes con mayor ventas en el año he visto que es con MAX y LIMIT pero realmente no se como implementar eso.

Y muchas gracias por contestar.
__________________
Lo imposible solo cuesta un poco mas
  #4 (permalink)  
Antiguo 25/04/2013, 08:55
Avatar de Developando  
Fecha de Ingreso: abril-2013
Mensajes: 48
Antigüedad: 11 años
Puntos: 5
Respuesta: mostrar los 10 registros con mas ventas

¿Pero tines que sacar el total de ventas de cada mes por separado, o la suma del año?

Si es el total de ventas en un año, yo haría un:

select SUM(totalFactura) from factura.... y luego utilizaría el limit para decir que coja los diez primeros resultado, es decir


Código SQL:
Ver original
  1. SELECT SUM(totalFactura) AS SUM WHERE ... ORDER BY SUM LIMIT 0,10

Trata de aplicar esto a tus consultas. Primero haces las sumas, luego le dices que las ordene de mayor a menor y finalmente le dice que sólo quieres los 10 primeros resultado. No lo he podido poner en tu consulta, pero yo creo que podrás aplicarlo tú sin problemas.

Ya me dirás si ha habido suerte o no ;)
  #5 (permalink)  
Antiguo 25/04/2013, 09:05
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: mostrar los 10 registros con mas ventas

Gracias por contestar.

Asi como me lo comentas Developando solo me regresa el total de todas las facturas y lo que busco es que me sume todas las facturas por cliente de un año, por ejemplo que me lo mostrara algo asi:

Código texto:
Ver original
  1. Cliente 1 10000
  2. Cliente 2 9000
  3. Cliente 3 8000
  4. Cliente 4 7000
  5. Cliente 5 6000
Lo que pasa es que el reporte se necesita cuanto se vendio por mes y sumar todas las cantidades del cliente por mes para obtener los 10 que mas compras tienen.

espero me puedan ayudar
__________________
Lo imposible solo cuesta un poco mas

Última edición por jandrogdz; 25/04/2013 a las 09:11
  #6 (permalink)  
Antiguo 25/04/2013, 09:27
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: mostrar los 10 registros con mas ventas

Ok lo he logrado, dejo mi consulta por si alguien mas le sirve.

Código MySQL:
Ver original
  1. SELECT YEAR(f.fecha) anio, SUM(f.totalFactura) suma,c.cliente
  2. FROM factura AS f JOIN  cliente AS c ON f.clienteID = c.clienteID
  3. GROUP BY c.cliente
  4. LIMIT 0,10

Gracias a todos los que me apoyaron con sus comentarios.
__________________
Lo imposible solo cuesta un poco mas
  #7 (permalink)  
Antiguo 25/04/2013, 10:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: mostrar los 10 registros con mas ventas

Pues yo, tomando tu consulta (y limpiándola más a mi gusto), podría ponerla así:
Código MySQL:
Ver original
  1.     (SELECT
  2.         c.clienteID Cliente,
  3.         YEAR( f.fecha) anio,
  4.         SUM(IF(MONTH(f.fecha) = 1, totalFactura, 0)) Enero,
  5.         SUM(IF(MONTH(f.fecha) = 2, totalFactura, 0)) Febrero,
  6.         SUM(IF(MONTH(f.fecha) = 3, totalFactura, 0)) Marzo,
  7.         SUM(IF(MONTH(f.fecha) = 4, totalFactura, 0)) Abril,
  8.         SUM(IF(MONTH(f.fecha) = 5, totalFactura, 0)) Mayo,
  9.         SUM(IF(MONTH(f.fecha) = 6, totalFactura, 0)) Junio,
  10.         SUM(IF(MONTH(f.fecha) = 7, totalFactura, 0)) Julio,
  11.         SUM(IF(MONTH(f.fecha) = 8, totalFactura, 0)) Agosto,
  12.         SUM(IF(MONTH(f.fecha) = 9, totalFactura, 0)) Septiembre,
  13.         SUM(IF(MONTH(f.fecha) = 10, totalFactura, 0)) Octubre,
  14.         SUM(IF(MONTH(f.fecha) = 11, totalFactura, 0)) Noviembre,
  15.         SUM(IF(MONTH(f.fecha) = 12, totalFactura, 0)) Diciembre
  16.         SUM(totalFactura) Total
  17.     FROM factura f INNER JOIN cliente c ON f.clienteID = c.clienteID
  18.         INNER JOIN asociado a ON c.asociadoID = a.asociadoID  
  19.     GROUP BY c.clienteID, YEAR(f.fecha)) Tabla
  20. ORDER BY Total, Cliente DESC

Claro que no tengo datos con que probarlo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: registros, ventas
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 13:47.