SQL - ayuda plox soy nuevo

   
Vista:
Imágen de perfil de Eluzay

ayuda plox soy nuevo

Publicado por Eluzay eluzay9512429054@gmail.com (3 intervenciones) el 24/05/2017 14:55:18
mostrar la clave de v que suministre el mayor numero de cant porfavor si alguien me pudiera ayudar :c

+---+---+------+
| V | P | Cant |
+---+---+------+
| 1 | 1 | 300 |
| 1 | 2 | 200 |
| 1 | 3 | 400 |
| 1 | 4 | 200 |
| 1 | 5 | 100 |
| 1 | 6 | 100 |
| 2 | 1 | 300 |
| 2 | 2 | 400 |
| 3 | 2 | 200 |
| 4 | 2 | 200 |
| 4 | 4 | 300 |
| 4 | 5 | 400 |
+---+---+------+
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

ayuda plox soy nuevo

Publicado por leonardo_josue (1111 intervenciones) el 24/05/2017 16:04:13
Hola Eluzay:

esto parecería una tarea escolar y aquí no hacemos el trabajo de otros...

¿qué intentaste hacer? porque supongo que al menos intentaste hacer algo... siempre que hagas una pregunta debes de incluir el código que hiciste, no importa si está mal... si tu código marca algún error entonces incluyes también el código del error; si tu código no regresa el resultado esperado, entonces nos dices primero qué es lo que estás obteniendo y en donde está el problema. Ojo con eso para la próxima.

Ahora bien, volviendo a tu problema... este es un problema básico de SQL; lo primero que debes obtener sería cuántas CANT suministra cada clave de V... esto lo haces simplemente AGRUPANDO y CONTANDO... (si no tienes experiencia en esto, investiga acerca de GROUP BY y COUNT).

Una vez que obtienes este dato, simplemente obtienes aquel que tiene la cantidad MAYOR, puedes hacerlo de muchas formas, por ejemplo si ordenas tus datos de mayor a menor, el PRIMERO DE ELLOS es la respuesta; o también puedes utilizar otras funciones de agrupación como MAX (que te regresa el máximo valor de una columna).

finalmente, es conveniente que menciones siempre con qué BD's estás trabajando, ya que cada uno de ellos maneja una sintaxis distinta.

haz la prueba y nos comentas.

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
Imágen de perfil de Eluzay

gracias :)

Publicado por Eluzay eluzay9512429054@gmail.com (3 intervenciones) el 24/05/2017 17:39:52
disculpa no quería causar molestias pero ya lo resolví gracias

select V,sum(Cant) from vp group by V order by V asc limit 1 ;

me costo pero lo resolví :d gracias por la información tomare en cuneta las recomendaciones para próximas consultas muchas gracias
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

gracias :)

Publicado por leonardo_josue (1111 intervenciones) el 24/05/2017 18:37:01
Hola de nuevo Eluzay:

Mucho ojo... hay un pequeño "error" en la consulta que debes tener en cuenta...

observa que la ORDENACIÓN la estás haciendo por el campo V y de manera ascendente... en este caso, resulta que el resultado COINCIDE con el esperado, ya que el v=1 es el que te arroja la mayor suma de cantidades, pero ¿qué pasa si el que tuviera más cantidades no fuera el v=1? observa este ejemplo en MySQL:

imagina que tienes estos datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mysql> SELECT * FROM tabla;
+------+------+------+
| V    | P    | cant |
+------+------+------+
|    1 |    1 |  300 |
|    1 |    2 |  200 |
|    2 |    3 |  400 |
|    2 |    4 |  200 |
|    2 |    5 |  100 |
|    2 |    6 |  100 |
|    2 |    1 |  300 |
|    2 |    2 |  400 |
|    3 |    2 |  200 |
|    4 |    2 |  200 |
|    4 |    4 |  300 |
|    4 |    5 |  400 |
+------+------+------+
12 rows in set (0.00 sec)
 
mysql> SELECT v, SUM(cant) total
    -> FROM tabla
    -> GROUP BY v;
+------+-------+
| v    | total |
+------+-------+
|    1 |   500 |
|    2 |  1500 |
|    3 |   200 |
|    4 |   900 |
+------+-------+
4 rows in set (0.00 sec)

aquí se observa que el V que tiene la máxima suma de cantidades es el V=2, pero ¿qué pasa con tu consulta?

1
2
3
4
5
6
7
8
9
10
mysql> SELECT V, SUM(Cant)
    -> FROM tabla
    -> GROUP BY V
    -> ORDER BY V ASC LIMIT 1 ;
+------+-----------+
| V    | SUM(Cant) |
+------+-----------+
|    1 |       500 |
+------+-----------+
1 row in set (0.00 sec)

Observa que regresa el mismo valor de V=1, aunque no represente la máxima suma... lo que tiene que hacer entonces es ordenar por el campo de la SUMA de manera DESCENDENTE ( es decir de mayor a menor):

1
2
3
4
5
6
7
8
9
10
mysql> SELECT v, SUM(cant) total
    -> FROM tabla
    -> GROUP BY v
    -> ORDER BY total DESC LIMIT 1;
+------+-------+
| v    | total |
+------+-------+
|    2 |  1500 |
+------+-------+
1 row in set (0.00 sec)

Haz la prueba y nos comentas.

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
2
Comentar
Imágen de perfil de Eluzay

:)

Publicado por Eluzay (3 intervenciones) el 24/05/2017 22:22:12
Wow no me había dado cuenta muchas gracias. Seguiré trabajando más en estos temas :)
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
Imágen de perfil de Isaias

gracias :)

Publicado por Isaias (1097 intervenciones) el 24/05/2017 22:56:18
Como siempre, EXCELENTE respuesta Leo, te pondre en la lista de mis "super-heroes"
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

gracias :)

Publicado por leonardo_josue (1111 intervenciones) el 24/05/2017 23:21:47
jejejejeje Gracias Isaías, pero nada de super-héroe, simplemente hay que ayudar al que se pueda (y al que se deje) :P

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
Revisar política de publicidad