donné ce tableau:Existe-t-il un meilleur moyen de rechercher sur une plage de valeurs dans Oracle que de tester une sous-requête?
x y
-- -
10 a
20 b
30 c
Je veux la meilleure façon de cartographier les valeurs de
[10,20) -> a
[20,30) -> b
[30,inf) -> c
En ce moment je suis en utilisant une requête comme:
select y from foo
where x=(select max(x) from foo
where x<=21);
Y at-il une meilleure façon de le faire? Y a-t-il une fonction analytique qui pourrait aider?
Voici mon cas de test:
create table foo as
select 10 as x ,'a' as y from dual union
select 20,'b' from dual union
select 30,'c' from dual;
-- returns: a,b,b:
select y from foo where x=(select max(x) from foo where x<=19);
select y from foo where x=(select max(x) from foo where x<=20);
select y from foo where x=(select max(x) from foo where x<=21);
Ah, parfait. Les tests sur mon ensemble de données complet montrent une amélioration similaire ... merci! –