Saltar al contenido

¿Cómo seleccionar las 100 filas principales en Oracle?

Después de de nuestra extensa selección de información dimos con la solución esta contratiempo que pueden tener ciertos de nuestros lectores. Te dejamos la solución y esperamos servirte de mucha ayuda.

Solución:

Suponiendo que create_time contiene la hora en que se creó el pedido y desea los 100 clientes con los últimos pedidos, puede:

  • agregue create_time en su consulta más interna
  • ordenar los resultados de su consulta externa por el create_time desc
  • agregue una consulta más externa que filtre las primeras 100 filas usando ROWNUM

Consulta:

  SELECT * FROM (
     SELECT * FROM (
        SELECT 
          id, 
          client_id, 
          create_time,
          ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn 
        FROM order
      ) 
      WHERE rn=1
      ORDER BY create_time desc
  ) WHERE rownum <= 100

ACTUALIZACIÓN para Oracle 12c

Con la versión 12.1, Oracle introdujo consultas Top-N "reales". usando el nuevo FETCH FIRST... sintaxis, también puede utilizar:

  SELECT * FROM (
    SELECT 
      id, 
      client_id, 
      create_time,
      ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn 
    FROM order
  ) 
  WHERE rn = 1
  ORDER BY create_time desc
  FETCH FIRST 100 ROWS ONLY)

deberías usar rownum en Oracle para hacer lo que buscas

where rownum <= 100

mira también esas respuestas para ayudarte

limite en oraculo

seleccione arriba en Oracle

seleccione arriba en Oracle 2

Como dijo Moneer Kamal, puedes hacerlo simplemente:

SELECT id, client_id FROM order 
WHERE rownum <= 100
ORDER BY create_time DESC;

Observe que el pedido está hecho. después obtener la fila 100. Esto podría ser útil para quien no quiere ordenar.

Puntuaciones y comentarios

Nos puedes sostener nuestro cometido dejando un comentario y dejando una puntuación te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *