none
hallar el maximo valor en SQL

    Question

  • tengo esta tabla

    yo quiero hallar el mayor precio: 

    select top 1 NUM_VTA,COD_CLIENTE,MAX(total)as precio
     from VENTA_CAB
     group by NUM_VTA,COD_CLIENTE

    pero aciendo esta consulta me sale 
    asi

    pero al observar la base de datos, nos damos cuenta que el precio maximo es 350, pero nos sale 105, quisera que me ayudases indicando cual es mi error

    Sunday, August 18, 2013 7:42 PM

Answers

  • Hola Jose,

    No uses TOP 1 pues el coste de ejecución de la consulta es muy elevado si existen muchos datos. Es mejor usar Having. Puedes resolver la SQL así,

    SELECT NUM_VTA,FECH_VTA, precio
    FROM VENTA_CAB
    GROUP BY NUM_VTA
    HAVING precio=MAX(precio)

    El HAVING se usa para condicionales de agregados que deben filtrar la consulta que es justo lo que quieres. Con esta instrucción estás haciendo que te devuelva esos tres campos siempre y cunado el precio sea el más grande.

    Saludos!


    Francesc Jaumot Peña MSP - MCPD www.francescjaumot.net www.geeks.ms/blogs/fjaumot Twitter: @fjaumot

    Sunday, August 18, 2013 8:48 PM

All replies

  • Buenas tarde jose_sanchez,

    Creo que la consulta la tienes mal, select top 1 NUM_VTA,COD_CLIENTE,MAX(total)as precio y debe ser MAX(precio) as total.

    Saludos!


    Francesc Jaumot Peña MSP - MCPD www.francescjaumot.net www.geeks.ms/blogs/fjaumot Twitter: @fjaumot

    Sunday, August 18, 2013 7:47 PM
  • perdona escribi mal si puse 

    select top 1 NUM_VTA,COD_CLIENTE,MAX(precio)as precio
     from VENTA_CAB
     group by NUM_VTA,COD_CLIENTE

    asi escribi en mi SQL pero me sale un valor que no quiero



    Sunday, August 18, 2013 8:04 PM
  • Hola Jose,

    No uses TOP 1 pues el coste de ejecución de la consulta es muy elevado si existen muchos datos. Es mejor usar Having. Puedes resolver la SQL así,

    SELECT NUM_VTA,FECH_VTA, precio
    FROM VENTA_CAB
    GROUP BY NUM_VTA
    HAVING precio=MAX(precio)

    El HAVING se usa para condicionales de agregados que deben filtrar la consulta que es justo lo que quieres. Con esta instrucción estás haciendo que te devuelva esos tres campos siempre y cunado el precio sea el más grande.

    Saludos!


    Francesc Jaumot Peña MSP - MCPD www.francescjaumot.net www.geeks.ms/blogs/fjaumot Twitter: @fjaumot

    Sunday, August 18, 2013 8:48 PM
  • Hola José Sánchez, estoy de acuerdo con las respuestas de Francesc eso es correcto...

    ahì lo tienes...


    Carlos Israel

    Sunday, August 18, 2013 9:09 PM