List:Spanish« Previous MessageNext Message »
From:Miguel Angel Orenes Date:June 22 2007 4:54pm
Subject:Re: GROUP BY
View as plain text  
Una forma bastante cutre, aunque eficaz, sería que que ordenaras los
responsables por valor máximo, y limitaras la salida a uno. Sería algo
así:

SELECT id, SUM(val) maximo, responsable FROM test
 ->GROUP BY id ORDER BY maximo DESC limit 1;

Salu2.

El día 21/06/07, Luciano A.F. <luauf@stripped> escribió:
>
> Tengo una duda, cuando utilizo GROUP BY y muestro algunos campos, que no
> afecto por ninguna función de agregado.
> Le paso un ejemplito bien armado para explicar lo que quiero decir:
>
>
> -- Creo la siguiente tablita
> CREATE TABLE test (
>         ID              INT NOT NULL,
>         VAL             FLOAT,
>         RESPONSABLE     CHAR(32)
> );
>
> -- Agrego un par de valores para tener con que hacer la prueba
> INSERT INTO test (ID, VAL, RESPONSABLE) VALUES (1, 8, 'Juan'),(1, 10,
> 'Pepe'),(2, 6, 'Jose'),(1, 7, 'Carlos'),(3, 5, 'Claudio'),(2, 1,
> 'Miguel'),(3, 9, 'Javier');
>
> -- La tabla me quedo así
> SELECT * FROM test;
> /*
>     ID     VAL  RESPONSABLE
> ------  ------  -----------
>      1       8  Juan
>      1      10  Pepe
>      2       6  Jose
>      1       7  Carlos
>      3       5  Claudio
>      2       1  Miguel
>      3       9  Javier
> */
>
> -- Hago una consulta agrupando
> SELECT id,SUM(val),COUNT(*) FROM test GROUP BY id;
> /*
>     id  SUM(val)  COUNT(*)
> ------  --------  --------
>      1        25         3
>      2         7         2
>      3        14         2
> */
>
>
> -- Ahora, si hago la siguiente consulta agrupando, pero ademas agrego el
> campo responsable
> -- Aca vienen mis dudas:
> -- la consulta la ejecuta... pero ¿Qué CRITERIO USA MySQL PARA MOSTRAR
> EL
> CAMPO responsable QUE NO ES AFECTADO POR NINGUNA FUNCIÓN DE AGREGADO?. No
> me
> parece muy convincente, que el analizador me acepte una consulta similar.
> -- Ahora, si yo quisiera que el responsable que me muestre se corresponda
> con el registro que tiene el máximo "val" ¿Se podría hacer sin
> hacer uso
> de
> JOINs?
>
> SELECT id,SUM(val),COUNT(*),responsable FROM test GROUP BY id;
>
> /*
>     id  SUM(val)  COUNT(*)  responsable
> ------  --------  --------  -----------
>      1        25         3  Juan
>      2         7         2  Jose
>      3        14         2  Claudio
> */
>
>
> --
> Lista de Correos de MySQL
> Para el historial de la lista: http://lists.mysql.com/mysql-es
> Para cancelar inscripción:
> http://lists.mysql.com/mysql-es?unsub=1
>
>

Thread
GROUP BYLuciano A.F.21 Jun
  • Re: GROUP BYMigue21 Jun
  • Re: GROUP BYMiguel Angel Orenes22 Jun
    • RE: GROUP BYLuciano A.F.24 Jun