Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wybrać Top 100 wierszy w Oracle?

Zakładając, że create_time zawiera czas utworzenia zamówienia i chcesz mieć 100 klientów z najnowszymi zamówieniami, możesz:

  • dodaj czas utworzenia w najgłębszym zapytaniu
  • uporządkuj wyniki zewnętrznego zapytania według create_time desc
  • dodaj najbardziej zewnętrzne zapytanie, które filtruje pierwsze 100 wierszy za pomocą ROWNUM

Zapytanie:

  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

AKTUALIZACJA dla Oracle 12c

Wraz z wydaniem 12.1, Oracle wprowadziło "prawdziwe" zapytania Top-N . Korzystanie z nowego FETCH FIRST... składni, możesz również użyć:

  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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odczytywanie danych POST z aplikacji Oracle Forms

  2. BIN_TO_NUM() Funkcja w Oracle

  3. aktualizacja klucza podstawowego a usunięcie klucza podstawowego + wstawienie

  4. logika w klauzuli HAVING, aby uzyskać wiele wartości grupy według wyniku

  5. Jak wysłać zapytanie GROUP BY Miesiąc w roku