sql >> Database teknologi >  >> RDS >> Oracle

Hvordan vælger man top 100 rækker i Oracle?

Forudsat at create_time indeholder det tidspunkt, hvor ordren blev oprettet, og du vil have de 100 klienter med de seneste ordrer, kan du:

  • tilføj create_time i din inderste forespørgsel
  • bestil resultaterne af din ydre forespørgsel efter create_time desc
  • tilføj en yderste forespørgsel, der filtrerer de første 100 rækker ved hjælp af ROWNUM

Forespørgsel:

VÆLG * FRA ( VÆLG * FRA ( VÆLG id, klient_id, oprette_tidspunkt, 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

OPDATERING til Oracle 12c

Med udgivelse 12.1 introducerede Oracle "rigtige" Top-N-forespørgsler . Brug af den nye FETCH FIRST... syntaks, kan du også bruge:

 VÆLG * FRA ( 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) kode> 


  1. Lagring af flere værdier for et enkelt felt i en database

  2. Laravel 5.4 opgradering, konvertering til utf4mb fra utf8

  3. Sådan gør du split og left join i oracle

  4. Få de underliggende kolonner i en visning baseret på dens resultatsæt