Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да изберете Топ 100 реда в Oracle?

Ако приемем, че create_time съдържа часа на създаване на поръчката и искате 100 клиента с най-новите поръчки, можете:

  • добавете create_time във вашата най-вътрешна заявка
  • подредете резултатите от вашата външна заявка по create_time desc
  • добавете най-външна заявка, която филтрира първите 100 реда с помощта на ROWNUM

Заявка:

  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

АКТУАЛИЗАЦИЯ за Oracle 12c

С версия 12.1 Oracle въведе "истински" Top-N заявки . Използвайки новия FETCH FIRST... синтаксис, можете също да използвате:

  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. Как да намеря зависимости в пакет оракул?

  2. Извличане на xml данни чрез заявка на oracle

  3. Как да инсталирате процедурна опция в Oracle 11gr2

  4. Грешка (подзаявката с един ред връща повече от един ред)

  5. Заглавията на колоните продължават да се появяват в изхода на Oracle