Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Nested Aggregate Functions (https://www.clubdelphi.com/foros/showthread.php?t=21544)

bartHo 19-05-2005 23:21:51

Nested Aggregate Functions
 
tengo un problema con interbase. Tengo que hacer un select y me da un error: "nested aggregate functions are not allowed". Un amigo me ha dicho que con mysql se puede hacer SELECT MAX(COUNT(ID_PEL)) FROM VISTA GROUP BY ID_PEL. El problema es que interbase no deja.

Alguien sabe como puedo hacer el select que me retorne el maximo de un count que esta agrupado por un campo???

No se si me he explicado bien, pero bueno, espero respuestas.

Ta Luego!

jachguate 19-05-2005 23:57:15

mysql podria permitir muchas cosas que no son parte del estándar, y que como esta sentencia que has puesto, no tienen mucho sentido para mi.. ¿estas seguro que mysql la permite?

Creo que podrias hacer simplemente

Código SQL [-]
Select id_pel, count(*)
  from tabla
 group by id_pel
 order by count(*) desc;
y quedarte solo con el primer registro, o bien hacer una vista que agrupe y luego un select max() sobre dicha vista.

Hasta luego.

;)

bartHo 20-05-2005 00:17:09

A ver...
 
Eso era un ejemplo... Mi caso es: tengo 3 tablas (archivo,busqueda, devuelve):
- archivo es un tabla con su clave_archivo i datos
- busqueda tiene su clave i otros datos
- devuelve es una tabla formada por la clave_archivo i la clave_busqueda, donde por cada busqueda se dan tantas filas como archivos devuelve. Ejemplo:

Clave_busqueda Clave_archivo
1 2
1 5
2 1
3 2

La consulta que quiero hacer es visualizar el nombre del archivo mas devuelto, se haria : SELECT COUNT(clave_Archivo) FROM DEVUELVE
GROUP BY clave_archivo, y lo que no se hacer es como devolver el maximo de este count.

GRACIASSSS

jachguate 20-05-2005 00:31:46

La solución es la misma, ¿no te parece?

Hasta luego.

;)

bartHo 20-05-2005 00:40:18

quiero el maximo pero...
 
con ese codigo me hace el count i hace la tabla, la ordena de mayor a menor... Pero yo lo que quiero es que solo me devuelva el maximo, es decir, la primera fila.

Como hago el MAX( del codigo) ???

thanks

jachguate 20-05-2005 00:51:12

Cita:

Empezado por bartHo
Pero yo lo que quiero es que solo me devuelva el maximo, es decir, la primera fila.

¿leiste esta parte?

Cita:

Empezado por Yo mero
y quedarte solo con el primer registro, o bien hacer una vista que agrupe y luego un select max() sobre dicha vista

:confused:

bartHo 20-05-2005 00:58:19

pero como?
 
pero como es el codigo para seleccionar el primer registro o el maximo de:

Select id_pel, count(*)
from tabla
group by id_pel
order by count(*) desc; ???????

Es eso q no se...

jachguate 20-05-2005 01:33:03

si haces una vista, y suponinendo que el count(*) se llamará contador, pues
Código SQL [-]
select max(contador)
  from Vista;

Si no, pues depende de la herramienta con que ejecutes la consulta. Si es delphi, pues abris en dataset (digamos un IBQuery), apuntas el valor del primer registro y luego lo cerras.

Hasta luego.

;)

bartHo 20-05-2005 01:50:34

...
 
Es q no es para hacer ninguna aplicacion, es por un ejercicio que tengo. Es para ver si se puede solucionar esto con solo un select... sino, probare lo de la vista.


La franja horaria es GMT +2. Ahora son las 04:22:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi