SQL - Duda Consulta SQL

   
Vista:

Duda Consulta SQL

Publicado por Rafa (5 intervenciones) el 04/09/2014 12:50:02
Buenos días,

Llevo poco tiempo con SQL y tengo una duda que me tiene estancado. Necesito entregar todos los meses un fichero con datos que tengo que extraer previamente mediante un Script SQL de una base de datos Oracle. Para hacer la consulta uso JDeveloper.

Pues bien, a modo de resumen la situación podría ser esta:

TABLA
Identificador | Potencia | Fecha
1 | 26 | 01/07/2014
1 | 37 | 03/07/2014
1 | 15 | 12/07/2014
2 | 18 | 11/07/2014
2 | 22 | 06/07/2014
3 | 13 | 09/07/2014
3 | 19 | 08/07/2014

Bien yo lo que quiero es que la consulta me devuelva una fila por cada identificador en la cual me indique cual es la máxima potencia y en qué fecha se dio esa máxima potencia. Es decir, este resultado:

Identificador | Potencia | Fecha
1 | 37 | 03/07/2014
2 | 22 | 06/07/2014
3 | 19 | 08/07/2014

Lo que no sé hacer es obtener la fecha en la que se ha dado el máximo. Si solamente fuera obtener para cada identificador la máxima potencia sería así:

select identificador, max(potencia)
from TABLA
group by identificador;

¿Como podría hacerlo?

Muchas 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

Duda Consulta SQL

Publicado por Rafael rafael@reef-life.com.mx (83 intervenciones) el 04/09/2014 17:11:15
Yo utilizaria algo asi:

1
2
3
4
5
6
7
SELECT a.identificador, a.potencia, a.fecha
FROM   tabla a,
       (SELECT identificador, max(potencia) potencia
        FROM tabla
        GROUP BY identificador) b
where  a.identificador = b.identificador
and    a.potencia = b.potencia

Sin embargo tiene el problema que si en el maximo de potencia coinciden dos dias mostrara los dos dias.... para el mismo identificador...

Espero te sirve y que nos cuentes como te ha ido...
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

Duda Consulta SQL

Publicado por Rafa (5 intervenciones) el 04/09/2014 18:21:04
Hola tocayo:

Voy a probarlo mañana y os cuento a ver que tal.

Mil gracias.

Saludos
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
Imágen de perfil de Isaias

Duda Consulta SQL

Publicado por Isaias (690 intervenciones) el 04/09/2014 22:00:52
Rafa

Por cuestiones de performance y suponiendo que este manejando un motor donde se puedan hacer funciones, yo cambiaria el sub-select por la función.
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

Duda Consulta SQL

Publicado por Rafa (5 intervenciones) el 04/09/2014 23:01:07
Hola Isaias:

¿Puedes aclararme un poco más el tema? Me estoy iniciando y aún no manejo todo el potencial de las consultas como puedes ver. Jejeje.

Muchas gracias.
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
Imágen de perfil de Isaias

Duda Consulta SQL

Publicado por Isaias (690 intervenciones) el 04/09/2014 23:50:45
¿Qué manejador de base de datos manejas?
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

Duda Consulta SQL

Publicado por Rafa (5 intervenciones) el 05/09/2014 10:44:06
Buenos días:

La base de datos es Oracle 11g Release2 y para las consultas utilizo el JDeveloper que venía en el paquete de instalación, es decir el 11g Release 2. Igual con el cliente Oracle, es todo el 11g Release2.

¿Necesitas algún otro dato?

Muchas gracias.

Saludos
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

Duda Consulta SQL

Publicado por Rafa (5 intervenciones) el 05/09/2014 16:03:38
Hola Rafa:

He probado tu código y no me funciona. Me da este error:

ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 96 Column: 138

En esa línea y columna que indica JDeveloper es donde viene el alias de la tabla, en nuestro caso "a".

Te cuento algo más por si tiene que ver.

Para simplificar mi ejemplo no indiqué que mi Tabla es en realidad un join de varias tablas. ¿Es posible que por ser un join no admita alias?

Gracias.
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