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

Oracle come partizionare i dati e ottenere record ogni 10%

Un'opzione sarebbe

SELECT id,
       h,
       n,
       q
  FROM (
    SELECT id, 
           h, 
           n, 
           q,
           row_number() over (partition by decile order by id, n) rn
      FROM (
        SELECT id, 
               h, 
               n, 
               q,
               ntile(10) over (order by id, n) decile
          FROM your_table
            )
        )
   WHERE rn = 1

Probabilmente esiste un approccio più efficiente utilizzando PERCENTILE_DISC o CUME_DIST che non sta facendo clic per me al momento. Ma dovrebbe funzionare.