Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle como particionar dados e obter registros a cada 10%


Uma opção seria
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

Provavelmente existe uma abordagem mais eficiente usando PERCENTILE_DISC ou CUME_DIST que não está clicando para mim no momento. Mas isso deve funcionar.