Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Max(count(*))

Estas en el tema de Max(count(*)) en el foro de PostgreSQL en Foros del Web. Buenas, estoy haciendo una practica sobre la liga de futbol. Tengo una entidad que se llama "Gol", donde tengo el codigo del tio que mete ...
  #1 (permalink)  
Antiguo 26/12/2006, 17:21
 
Fecha de Ingreso: diciembre-2006
Mensajes: 7
Antigüedad: 17 años, 10 meses
Puntos: 0
Max(count(*))

Buenas, estoy haciendo una practica sobre la liga de futbol. Tengo una entidad que se llama "Gol", donde tengo el codigo del tio que mete el gol y el minuto.
Para saber quien es el pichichi he pensado en esta consulta y llevo dandole vueltas cantidad de tiempo.

SELECT MAX(COUNT(*)) FROM "Gol" GROUP BY "Cod_Mete"

y me da el siguiente error:

ERROR: aggregate function calls may not be nested

He estado buscando por ahi y parece que esto en oracle no pasa. Si alguien me puede ayudar se lo agradeceria

Saludos.
  #2 (permalink)  
Antiguo 27/12/2006, 10:25
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 2 meses
Puntos: 7
Re: Max(count(*))

Hola...

¿qué es lo que intentas hacer?
__________________
Gracias de todas todas
-----
Linux!
  #3 (permalink)  
Antiguo 27/12/2006, 10:56
Avatar de calleigh  
Fecha de Ingreso: diciembre-2006
Mensajes: 5
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Max(count(*))

Es hacer un contador de los goles que lleva el jugador en cuestion, xo el mas count en postgre no furula wien da ese fallo, alguna sugerencia
  #4 (permalink)  
Antiguo 27/12/2006, 14:03
 
Fecha de Ingreso: diciembre-2006
Mensajes: 7
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Max(count(*))

Lo q quiero es sacar el tio que mas goles mete, donde Cod_Mete es el identificador de cada jugador. Si pongo:

SELECT "Cod_Mete",COUNT(*) FROM "Gol" GROUP BY "Cod_Mete"

Esto me saca todos los jugadores q meten goles y quien los a metido. Por eso para sacar quien es el q mas goles mete seria con la consulta q me da el error.

Por cierto, gracias por contestar. Un saludo
  #5 (permalink)  
Antiguo 27/12/2006, 17:34
Avatar de jabi  
Fecha de Ingreso: noviembre-2006
Mensajes: 120
Antigüedad: 18 años
Puntos: 1
Re: Max(count(*))

En PostgreSQL no sé como será el procedimiento más correcto porque no lo he manejado nunca, pero quizás valga aplicar el concepto de vista, prueba a ver si te deja hacer lo siguiente:

Código:
CREATE VIEW goles_por_jugador (goles)
AS SELECT count(*) 
FROM "Gol" 
GROUP BY "Cod_Mete"
Con ésto obtendríamos una especie de tabla "virtual" con los goles de cada jugador, se puede decir que hemos creado una nueva tabla llamada goles_por_jugador con una única columna llamada goles; pues bien, como una vista se comporta igual que una tabla a nivel de hacer consultas, podrías hacer después perfectamente:

Código:
SELECT Max(goles)
FROM "goles_por_jugador"
En el caso de que las vistas no existan en PostgreSQL, como pasa en Access sin ir más lejos, puedes hacer primero la consulta para obtener los goles de cada jugador y después la consulta para obtener el valor máximo, poniendo en la cláusula FROM el nombre de la consulta con los goles (una consulta se comporta como una nueva tabla sobre la que hacer consultas en Access)
__________________
No estoy aquí de vacaciones, creéme.
  #6 (permalink)  
Antiguo 28/12/2006, 07:52
 
Fecha de Ingreso: diciembre-2006
Mensajes: 7
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Max(count(*))

Muchas gracias, me has resuelto 2 problemas:
1. el de la consulta
2. para q sirven las vistas.

Saludos
  #7 (permalink)  
Antiguo 29/12/2006, 16:33
Avatar de PeterQB  
Fecha de Ingreso: diciembre-2006
Ubicación: La eterna primavera
Mensajes: 39
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Max(count(*))

lo que podrias hacer es ordenarlos de mayor a menor y limitarlos a un solo registro con el comando LIMIT 1; al final
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:11.