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

problema con funciones agregadas

Estas en el tema de problema con funciones agregadas en el foro de Bases de Datos General en Foros del Web. buenas, necessito sacar el nombre que aparece mas veces en una tabla y el numero de veces que sale.he conseguido sacar una relacion de todos ...
  #1 (permalink)  
Antiguo 18/04/2005, 08:38
 
Fecha de Ingreso: abril-2005
Mensajes: 19
Antigüedad: 19 años
Puntos: 0
problema con funciones agregadas

buenas, necessito sacar el nombre que aparece mas veces en una tabla y el numero de veces que sale.he conseguido sacar una relacion de todos los nombres acompañados del numero de veces que salen con

select count(r8.idbusqueda),archivo.nombre from archivo join r8 on archivo.idarchivo=r8.idarchivo group by archivo.nombre

la tabla en cuestion es r8 y tiene dos columnas
idarchivo|idbusqueda
--------------------
1 |1
1 |2
2 |3
...
idarchivo es una clave extranjera que hace referencia a la table archivo donde tengo almacenado el nombre....

bueno con este select me queda algo de este tipo

count | nombre
---------------
2 | ap_apuntes
1 | bases

pero yo necessito que solo me salga el mayor. Había pensado utilizar la funcion max pero no se como aplicarla a un select que ya tiene un COUNT. Y ahora estoy pesando hacer un stored procedure no tengo mucha idea

con este:

set term!!;
CREATE PROCEDURE prova3
RETURNS (no_busquedas integer, num integer)
AS
BEGIN

FOR select count(idbusqueda),idarchivo from r8 group by r8.idarchivo INTO :no_busquedas, num
DO
BEGIN

SUSPEND;
END
END!!
set term!!;

y este select:
select max(no_busquedas) from prova3
conso el numero maximo pero no el nombre

y este select me da error:
select max(prova3.no_busquedas), archivo.nombre from prova3,archivo where prova3.num=archivo.idarchivo

como veis no tengo mucha idea de bases y no se que hacer si me podeis ayudar...

gracias
  #2 (permalink)  
Antiguo 18/04/2005, 11:52
 
Fecha de Ingreso: marzo-2005
Mensajes: 81
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola,

este es un ejemplo de lo que quieres, es en SQL server


select count(campo1) as conteo, campo2
into tmp1 --tabla auxiliar
from tabla1
group by campo2


select top 1 *
from tmp1
order by campo1 desc

esta es otra forma


select top 1 *
from (select count(campo1) as campo1, campo2
from tabla1
group by campo2) T1
order by campo1 desc



con top 1 le estas diciendo que solo regrese el primer registro, puedes poner select top 1, select top 10, etc.

con el desc le estas diciendo que te los ordene de manera descendente

Puedes meter eso a un Stored procedure.

Última edición por ChadX; 18/04/2005 a las 11:57
  #3 (permalink)  
Antiguo 18/04/2005, 18:22
 
Fecha de Ingreso: abril-2005
Mensajes: 19
Antigüedad: 19 años
Puntos: 0
gracias por la respuesta pero estoy usando interbase y creo que la instrucción top no se puede usar. Corregidme si me equivoco
gracias
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 16:24.