SQL - Consulta que arroja error

   
Vista:

Consulta que arroja error

Publicado por alberto (3 intervenciones) el 08/01/2010 17:42:59
Hola y gracias por leer esto.

Tengo una tabla con registros todos los días. Quiero saber qué día es el que tengo más registros. Mi consulta es

SELECT dia, max(inputs)
FROM ( SELECT TO_CHAR(FECHA,'dd/mm/yyyy') as dia, COUNT(TO_CHAR(FECHA,'dd/mm/yyyy')) as inputs
FROM LOG
GROUP BY TO_CHAR(FECHA,'dd/mm/yyyy')
)

pero me devuelve el error:
ORA-00937: la función de grupo no es de grupo único.

Con la consulta interna consigo estar cerca y obtengo el numero de registros por cada día pero a la hora de obtener el máximo no lo consigo porque me exige poner un group by dia externo.

¿ Alguna idea ?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta que arroja error

Publicado por Ethan (8 intervenciones) el 08/01/2010 20:44:32
queda asi como dices:

SELECT dia, max(inputs)
FROM ( SELECT TO_CHAR(FECHA,'dd/mm/yyyy') as dia, COUNT(*)) as inputs
FROM LOG
GROUP BY TO_CHAR(FECHA,'dd/mm/yyyy')
)
group by dia

ya que solo te va devolver el dia y su cuenta maxima
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta que arroja error

Publicado por alberto (3 intervenciones) el 08/01/2010 22:26:19
Muchas gracias Ethan por la respuesta.

La respuesta que me pones tiene un paréntesis cambiado pero si soluciono eso me devuelve todos los días y no me devuelve el día con el máximo

Si hago el último group by me mantiene luego la agrupacion y si no la hago me da el error.

:S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta que arroja error

Publicado por Alberto (3 intervenciones) el 12/01/2010 13:46:36
Se me ha ocurrido esto y funciona:

SELECT DIA, INPUTS
FROM ( SELECT TO_CHAR(FECHA,'dd/mm/yyyy') AS DIA, count(*) AS INPUTS
FROM LOG
GROUP BY TO_CHAR(FECHA,'dd/mm/yyyy')
)

WHERE INPUTS = ( SELECT max(INPUTS)
FROM ( SELECT TO_CHAR(FECHA,'dd/mm/yyyy'), count(*) AS INPUTS
FROM LOG
GROUP BY TO_CHAR(FECHA,'dd/mm/yyyy')
)
)

Hago una vez la consulta para obtener el número de operaciones por cada día. A ese le busco el máximo. ( CONSULTA DENTOR DEL WHERE )
La consulta externa hace la misma para obtener el número de operaciones por día pero con la condición de que el número sea igual al máxmio que obtuve antes.

Funciona aunque no se por qué la anterior no lo hacía :S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar