• Viernes 29 de Marzo de 2024, 11:23

Autor Tema:  Duda Con Sum Y Min  (Leído 2543 veces)

AdrianHdez

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Duda Con Sum Y Min
« en: Domingo 3 de Junio de 2007, 07:31 »
0
saludos

quiero saber por que no puedo obtener el maximo de esta consulta colocando despues del GROUP BY: having max(sum(Leche.cantidad)). Me da este error: Cannot perform an aggregate function on an expression containing an aggregate or a subquery.


select Granja.NoGranja, sum(Leche.cantidad) as Produccion_Leche  from Granja inner join
   Animal on Granja.NoGranja = Animal.NoGranja inner join Produccion on
    Produccion.idProd = Animal.IdProd inner join [Leche] on [Leche].idProd = Produccion.idProd
GROUP BY Granja.NoGranja

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Duda Con Sum Y Min
« Respuesta #1 en: Domingo 3 de Junio de 2007, 09:08 »
0
having es una condición como el where pero que se aplica a los a los registros resultantes de algún GROUP BY y max no es ninguna condición.

¿Se entiende?
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Duda Con Sum Y Min
« Respuesta #2 en: Domingo 3 de Junio de 2007, 11:31 »
0
Cita de: "AdrianHdez"
saludos

quiero saber por que no puedo obtener el maximo de esta consulta colocando despues del GROUP BY: having max(sum(Leche.cantidad)). Me da este error: Cannot perform an aggregate function on an expression containing an aggregate or a subquery.


select Granja.NoGranja, sum(Leche.cantidad) as Produccion_Leche  from Granja inner join
   Animal on Granja.NoGranja = Animal.NoGranja inner join Produccion on
  Produccion.idProd = Animal.IdProd inner join [Leche] on [Leche].idProd = Produccion.idProd
GROUP BY Granja.NoGranja
Esa es tu sentencia completa?

en que parte usas? Max

asi?

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] Granja.NoGranja, sum(Leche.cantidad) as Produccion_Leche  from Granja inner join
   Animal on Granja.NoGranja = Animal.NoGranja inner join Produccion on
    Produccion.idProd = Animal.IdProd inner join [Leche] on [Leche].idProd = Produccion.idProd GROUP BY Granja.NoGranja having max(sum(Leche.cantidad)) <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->

pues creo que eso no esta permitido :P

mira este seria un ejemplo con sub-consultas tendrias que adaptarlo con las tablas apropiadas, con esto obtendrias el maximo de produccion de leche por granja (quedando pendientes las demas tablas):

* <!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] Granja.NoGranja,max(([color=blue;font-weight]SELECT[/color] sum(Leche.Cantidad)  FROM Leche where Granja.NoGranja=Granja.NoGranja GROUP BY Leche.NoGranja)) Produccion_Leche from Granja order by Produccion_Leche desc <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->

* Este codigo fue probado en MySQL y es posible que algunas haya que hacer algunas modificaciones para adaptarlo a SQL Server  &lt;_&lt;

Otro detalles si lo que haces es un Having (deduzco  :rolleyes:  que solo te interesa la granja con mayor produccion de leche, el cual seria un solo registro)

Puedes hacer lo siguiente:

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]SELECT[/color] Top 1 sum(Leche.Cantidad) Produccion_Leche desc FROM Leche,Granja where Granja.NoGranja=Granja.NoGranja GROUP BY Leche.NoGranja order by Produccion_Leche desc <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->


Ordenarlos de mayor a menor y tomar el primer registro que por logica debe ser el mayor :P

Espero haber ayudado




Cita de: "Angel_K_ido"
having es una condición como el where pero que se aplica a los a los registros resultantes de algún GROUP BY y max no es ninguna condición.

¿Se entiende?
No :P

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Duda Con Sum Y Min
« Respuesta #3 en: Domingo 3 de Junio de 2007, 14:58 »
0
Cita de: "F_Tanori"
Cita de: "Angel_K_ido"
having es una condición como el where pero que se aplica a los a los registros resultantes de algún GROUP BY y max no es ninguna condición.

¿Se entiende?
No :P
 :scream:  Es que anoche yo estaba ebrio :beer: ... en fin...

 :hola:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.