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

Registro mas repetido en una tabla

Estas en el tema de Registro mas repetido en una tabla en el foro de Oracle en Foros del Web. Buenas Necesito sacar de una tabla cual es el valor que mas veces se repite. Por ejemplo, una tabla de libros prestados, saber cual es ...
  #1 (permalink)  
Antiguo 14/01/2016, 12:24
 
Fecha de Ingreso: enero-2016
Mensajes: 2
Antigüedad: 8 años, 3 meses
Puntos: 0
Registro mas repetido en una tabla

Buenas
Necesito sacar de una tabla cual es el valor que mas veces se repite. Por ejemplo, una tabla de libros prestados, saber cual es el titulo que mas se ha prestado. Es algo asi:

nro_prestamo cod_cliente cod_libro

221 111 101
222 222 201
223 333 201
224 333 101
225 111 201
226 555 201
227 222 301
228 444 501


De esta tabla el mas repetido es el libro 201,
adicionalmente si tuviera otra tabla donde tengo cod_libro y titulo = 201, divina comedia, como haría para que a la final me quede solo el nombre del libro mas prestado.
He intentado con rownum y ordenar la cuenta, pero no me parece optimo. Recordando que no puedo hacer algo como max(count(cod_libro)) o no se si es que no se usarlo.
  #2 (permalink)  
Antiguo 14/01/2016, 12:35
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Registro mas repetido en una tabla

Buenas tardes

Antes de descartar tu idea (Me parece buena con max(count(cod_libro))) revisa los planes de ejecución de la consulta y mira por ti mismo si realmente es una consulta optima o no.

Si no es optima, ya miramos que otra forma podría hacerse mejorando los respectivos planes de ejecución.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 14/01/2016, 12:53
 
Fecha de Ingreso: enero-2016
Mensajes: 2
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Registro mas repetido en una tabla

Cita:
Iniciado por huesos52 Ver Mensaje
Buenas tardes

Antes de descartar tu idea (Me parece buena con max(count(cod_libro))) revisa los planes de ejecución de la consulta y mira por ti mismo si realmente es una consulta optima o no.

Si no es optima, ya miramos que otra forma podría hacerse mejorando los respectivos planes de ejecución.

Saludos
Lo que sucede es que me lanza este error al tratar de hacerlo asi

ERROR at line 1:
ORA-00937: not a single-group group function
  #4 (permalink)  
Antiguo 14/01/2016, 13:09
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Registro mas repetido en una tabla

Código SQL:
Ver original
  1. SELECT
  2. *FROM
  3. (
  4. SELECT cod_libro,MAX(COUNT(cod_libro)) cantidad FROM libros
  5. GROUP BY cod_libro ORDER BY 2 DESC
  6. ) WHERE rownum = 1;

Creo que funcionaría.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: cliente, registro, repetido, tabla, usar
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 21:05.