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

Ayuda con una consulta!!

Estas en el tema de Ayuda con una consulta!! en el foro de Oracle en Foros del Web. Hola, como seria una consulta que mostrara los 3 valores mas grandes, por ejemplo, los 3 productos con el precio más grande. Me interesa hacerlo ...
  #1 (permalink)  
Antiguo 28/02/2010, 15:51
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Ayuda con una consulta!!

Hola, como seria una consulta que mostrara los 3 valores mas grandes, por ejemplo, los 3 productos con el precio más grande. Me interesa hacerlo sin el ROWNUM. Gracias de antemano.
  #2 (permalink)  
Antiguo 28/02/2010, 18:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Ayuda con una consulta!!

Que inconveniente tienes en hacerlo con rownum?

Solo conozco esa forma.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 28/02/2010, 19:00
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda con una consulta!!

El profe nos lo tiene prohibido... Se la hice con rownum y me dijo que no era el metodo que queria.... Se tiene que hacer con subconsultas me parece, pero llevo rato pensando y ni idea... Gracias!!
  #4 (permalink)  
Antiguo 28/02/2010, 19:20
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Ayuda con una consulta!!

Esperemos que alguien mas te ayude. No se me ocurre nada hasta ahora, hacerlo sin hacer uso de rownum.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 01/03/2010, 05:38
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Respuesta: Ayuda con una consulta!!

Si tienes que sacar 3 registros , es facil, si tienes que sacar mas tienes que añadir otra subselect y si tienes que sacar menos, quitar una .

Es una pollez , pero como ejercicio está bien.

Cita:
SQL> CREATE TABLE TABLA
2 ( ID NUMBER )
3 /

Tabla creada.

SQL>
SQL> INSERT INTO TABLA VALUES ( 1 )
2 /

1 fila creada.

SQL> INSERT INTO TABLA VALUES ( 651 )
2 /

1 fila creada.

SQL> INSERT INTO TABLA VALUES (4451 )
2 /

1 fila creada.

SQL> INSERT INTO TABLA VALUES (4541 )
2 /

1 fila creada.

SQL> INSERT INTO TABLA VALUES ( 5651 )
2 /

1 fila creada.

SQL>
SQL> COMMIT
2 /

Validación terminada.

SQL>
SQL> select * from TABLA
2 where ID >= (
3 select max(ID)
4 from TABLA
5 where ID < (
6 select max(ID)
7 from TABLA
8 where ( ID ) not in (
9 select max(ID)
10 from TABLA
11 ) ) );

ID
---------
4451
4541
5651

SQL> SELECT * FROM TABLA ORDER BY ID DESC;

ID
---------
5651
4541
4451
651
1

SQL> DROP TABLE TABLA PURGE
2 ;

Tabla borrada.

SQL>
  #6 (permalink)  
Antiguo 01/03/2010, 05:48
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda con una consulta!!

Perfecto!! Muchas gracias!!! Al final ya habia sacado una solución, pero muchas gracias igualmente, me lo has aclarado bastante. Aqui dejo la solucion que saqué de los 3 mas grandes, para quien le interese:

SELECT atrib
FROM table a1
WHERE 3>
(
select count ( * )
from table a2
where a1.atrib < a2. atrib
)
  #7 (permalink)  
Antiguo 01/03/2010, 06:42
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Respuesta: Ayuda con una consulta!!

Mas facil y menos compleja que la mia.

Muy Bien ¡¡¡¡¡¡¡¡¡

Etiquetas: Ninguno
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 13:48.