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 :
J'imagine qu'il y a une fonction analytique qui peut faire ça sans requête imbriquée mais je ne la trouve pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select COL01 from ( select COL01 , rank() over ( order by COL01) as rk from MaTable ) where rk = 100
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 ?
Partager