Selection multiple d'un rang unique
Bonsoir à tous,
Le problème me parait simple, mais je n'ai pas trouvé de solution simple donc je viens demander votre avis :)
Considérons une table :
Ou id est un serial, date un timestamp et value un varchar
Elle est peuplée de beaucoup de données, qui ont un espacement moyen de quelques minutes. Par contre cet espacement n'est pas régulier, comme ceci
Code:
1 2 3 4 5 6 7 8
| id | date | value
1 | 2014-01-01 00:01:21 | toto
2 | 2014-01-01 00:02:34 | titi
3 | 2014-01-01 00:07:25 | tata
4 | 2014-01-01 00:07:57 | tutu
5 | 2014-01-01 00:10:42 | tete
6 | 2014-01-01 00:12:21 | toto
.... |
Nous disposons de plusieurs dates et nous souhaitons en une seule requête récupérer les rangs inférieurs les plus près de ces dates (un rang par date)
Par exemple, si les dates données sont
- 2014-01-01 00:02:00
- 2014-01-01 00:08:00
- 2014-01-01 00:12:00
Nous aimerions avoir ce résultat, en une seule requête
Code:
1 2 3 4
| id | date | value
1 | 2014-01-01 00:01:21 | toto
4 | 2014-01-01 00:07:57 | tutu
6 | 2014-01-01 00:12:21 | toto |
Une solution simple serait UNION mais elle ne nous convient pas pour des raisons de performance (ça fera l'affaire si on ne trouve pas mieux, mais intuitivement on se dit qu'on devrait pouvoir faire mieux, c'est juste qu'on y arrive pas)
Avez vous d'autres idées ? Des pistes ?
Merci !