Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle comment partitionner les données et obtenir des enregistrements tous les 10 %

Une option serait

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

Il existe probablement une approche plus efficace en utilisant PERCENTILE_DISC ou CUME_DIST cela ne clique pas pour moi pour le moment. Mais cela devrait fonctionner.