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

  1. vordano Messages postés 1981 Statut Membre 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
    1. 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
    2. vordano Messages postés 1981 Statut Membre 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
    3. Maliossimo
       
      comment je peux faire ça???
      je suis un débutant dans les base de données ^^
      0
    4. vordano Messages postés 1981 Statut Membre 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
    5. Maliossimo
       
      merci pour la réponse :)
      0
  2. 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