Requête mysql pour faire une interpolation
Maliossimo
-
A.Nonymous -
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.
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
-
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)-
-
-
-
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 -
-
-
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