Bonjour à tous,

Débutant en SQL, j'ai un petit problème pour effectuer une requête.

J'ai 2 tables : une contenant des observations (heure => V1 et hauteur => V2), l'autre des prédictions (heure => V1 et hauteur => V2).

Il faut que : pour chaque tuple dans la table prédiction je récupère l'observation dont V2 est maximale, parmi toutes les observations dans une plage de plus ou moins 1h par rapport à l'heure de prédiction (V1).

Voici un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
>  obs
  V1 V2
1  1  5
2  2  9
3  3  3
4  4 20
5  5  2
 
> pred
   V1 V2
1 1.2  6
2 3.9 17
Il faudrait donc obtenir ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
> res
  V1 V2
1  2  9
2  4 20
Je pensais à une requête de ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
select distinct obs.V1, obs.V2
from obs,pred
where obs.V2>=(select max(obs.V2)
               from obs,pred
               where abs(obs.V1 - pred.V1) <  1
               group by pred.V1)
Mais elle n'est pas bonne.

Si vous avez des suggestions, je suis preneur!

Je vous remercie.