Retrouver la 100ème valeur. Optimisation
J'ai une table avec une seule colonne COL01 utile pour ce besoin.
Je veux la 100ème valeur de cette colonne COL01.
J'ai cette requête, elle convient parfaitement :
Code:
1 2 3
| select COL01 from
( select COL01 , rank() over ( order by COL01) as rk from MaTable )
where rk = 100 |
J'imagine qu'il y a une fonction analytique qui peut faire ça sans requête imbriquée mais je ne la trouve pas.
Ca c'est mon besoin d'aujourd'hui.
Mais j'imagine qu'il y a aussi une syntaxe pour réécrire la requête ci-dessous :
Code:
1 2 3
| select COL01, COL02, COL03 from
( select COL01, COL02 , COL03 rank() over ( partition by COL01 order by COL02) as rk from MaTable )
where rk = 100 |
Autrement dit, dans chaque groupe identifié par COL01, récupérer la 100 ème plus petite valeur sur la colonne COL02, et récupérer la description COL03 correspondant à cette 100ème valeur.
Si au lieu de la 100ème ligne, je veux la 1ère ligne, je sais faire , avec MIN () KEEP (DENSE_RANK ...)
Mais pour une ligne arbitraire, autre que la 1ère ?