MySQL - KESIMO MAYOR CON MYSQL

 
Vista:

KESIMO MAYOR CON MYSQL

Publicado por Alejandro Alarcón (2 intervenciones) el 24/04/2018 13:52:17
Hola!

Mi consulta es la siguiente:

Existe en Excel la función KESIMO MAYOR, en donde es posible evaluar un rango y obtener un valor según la posición que uno indique, pero necesito algo similar en MYSQL, rescatar las mejores 6 semanas de venta de un año especifico (52-53 SEMANAS), en donde cada registro tiene como llave "el código" del producto y me muestra los 6 campos de estas ventas evaluadas....

Existe alguna función en Mysql similar a "Kesimo mayor"?

Se agradece de antemano su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 250
Plata
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

KESIMO MAYOR CON MYSQL

Publicado por leonardo_josue (414 intervenciones) el 24/04/2018 17:22:48
Hola Alejandro:

No conozco la función que mencionas en excel y tampoco explicas cómo es que trabaja... sería conveniente que nos pongas algunos datos de ejemplo de cómo tienes tus datos en MySQL y a partir de esos datos que nos digas qué es lo que quieres obtener como resultado. Así será más factible que podamos decir si hay alguna manera de simular esta función con MySQL

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

KESIMO MAYOR CON MYSQL

Publicado por Alejandro Alarcón (2 intervenciones) el 25/04/2018 05:20:16
Leo, Muchas gracias por responder...

Básicamente se resume en 5 columnas:

Local / código / año / semana / venta

Y necesito rescatar las mejores 6 semanas de venta evaluando un año completo de cada combinación local / código (que son 70 locales y 5000 códigos aprox)

Quedaría algo así:

Local / código / Año / sem-1 / sem-2 / sem-3 etc...

La sintaxis de K.ESIMO.MAYOR en excel:

K.ESIMO.MAYOR(rango, k)

rango (obligatorio): El rango de celdas donde se buscará.
k (obligatorio): El k-ésimo valor más grande a buscar.

En "k" yo indico que me traiga la semana de mayor venta, de 1 a 6... Con esto siempre me va a mostrar las mejores 6 semanas del año indicado.

Pero no me sirve en Excel... Ya que debo hacerlo en MySQL... Ya que va conectado a otra información..... Que por su cantidad de registros... Excel no da.

Saludos,
Alejandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 250
Plata
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

KESIMO MAYOR CON MYSQL

Publicado por leonardo_josue (414 intervenciones) el 26/04/2018 15:59:21
Hola de nuevo Alejandro:

En mi post anterior te pedía que pusieras algunos datos de ejemplo, para que quedara más claro qué es lo que quieres hacer no lo hiciste. Entre más detalles nos pongas de tu modelo de BD's más factible será que alguien te pueda ayudar. Aquí puede haber muchos expertos en MySQL que no sepan absolutamente nada de EXCEL como puede ser mi caso. Pero bueno, tratando de jugar al adivino veamos si esto te puede servir.

Supongamos que tu tabla tiene más o menos estos datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT * FROM tabla;
+------------+--------+------+--------+-------+
| local      | codigo | anio | semana | venta |
+------------+--------+------+--------+-------+
| local uno  |      1 | 2018 |      1 |    30 |
| local uno  |      2 | 2018 |      2 |    19 |
| local uno  |      3 | 2018 |      3 |    21 |
| local dos  |      4 | 2018 |      1 |    45 |
| local dos  |      5 | 2018 |      2 |    20 |
| local dos  |      6 | 2018 |      3 |    60 |
| local tres |      7 | 2018 |      2 |    15 |
| local tres |      8 | 2018 |      3 |    20 |
| local tres |      9 | 2018 |      6 |    90 |
+------------+--------+------+--------+-------+
9 rows in set (0.00 sec)

Entonces, si quisieras obtener las seis mejores semanas de ventas, lo que haces es ordenar por ventas de manera descendente y utilizas la función LIMIT:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT * FROM tabla ORDER BY venta DESC LIMIT 6;
+------------+--------+------+--------+-------+
| local      | codigo | anio | semana | venta |
+------------+--------+------+--------+-------+
| local tres |      9 | 2018 |      6 |    90 |
| local dos  |      6 | 2018 |      3 |    60 |
| local dos  |      4 | 2018 |      1 |    45 |
| local uno  |      1 | 2018 |      1 |    30 |
| local uno  |      3 | 2018 |      3 |    21 |
| local dos  |      5 | 2018 |      2 |    20 |
+------------+--------+------+--------+-------+
6 rows in set (0.00 sec)

Si esto no es lo que necesitas vuelvo a insistir, postea datos de ejemplo (NO IMPORTA QUE NO SEAN DATOS REALES) y a partir de esos datos dinos qué es lo que esperas obtener como salida.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar