Requête mysql pour faire une interpolation

Maliossimo -  
 A.Nonymous -
Bonjour,
J'ai une table avec des valeurs dans les colonnes x et y.

X , Y
10 676
20 894
30 1100
40 1200
50 1000

Je me demandais si il ya une syntaxe SQL / fonction qui peut m'aider à faire une interpolation linéaire. Par exemple, je veux que la valeur interpolée de Y qui correspond à X = 35.

Compte tenu de la table ci-dessus, la solution doit retourner y = 1150 pour x = 35 et y = 1100 pour x = 45.

Est ce que vous avez des suggestions?. Merci d'avance pour toute aide.

2 réponses

vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
je ne pense pas que ce soit possible (mais je peux me tromper)
le sql est un langage d'interrogation de base de donnée, et non de calcul compliqué comme tu le souhaite.
le plus simple serais d'utiliser du php (ou un autre langage)
0
Maliossimo
 
je peux utiliser java pour faire l'interpolation, mais est ce qu'il une requête qui peut me retourner
X = 30 Y = 1100
X= 40 Y = 1200
quand je demande retourner Y quand X = 35???
0
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
tu récupère la dizaine pour la valeur minimal de X et tu rajoute 10 pour la valeur maximal
et pour Y, si tu as X, tu as Y
0
Maliossimo
 
comment je peux faire ça???
je suis un débutant dans les base de données ^^
0
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
là c'est pas encore de la base de données, c'est du java.
tu récupère la valeur 35:
tu as différentes méthodes pour récupérer les dizaines, soit tu divise par 10 et tu arrondi, soit tu gère ça comme une chaine et tu récupère tout sauf le dernier caractère.

au final tu obtient 30, auquel tu rajoute 10: ça te donne ta valeur min et max de X
ensuite tu fait une requête par exemple:
select y from truc where x = 30
select y from truc where x=40
ces deux requêtes te renvoient la valuer min et max de y
0
Maliossimo
 
merci pour la réponse :)
0
A.Nonymous
 
SELECT
(( target.x - lt.x ) * ( gt.y - lt.y ) / ( gt.x - lt.x )) + lt.y AS computed_y
FROM (SELECT 35 'x') AS target
INNER JOIN items AS gt ON gt.x >= target.x
INNER JOIN items AS lt ON lt.x <= target.x
0