Soustraction entre deux valeurs

mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 7 févr. 2018 à 22:03 - Dernière réponse : yg_be 4603 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 février 2018 Dernière intervention
- 8 févr. 2018 à 20:56
Bonjour,

J'ai une table avec les informations ci-dessous :

Date, ID, Price
07/02/2018, ORANGE, 54
08/02/2018, ORANGE, 53
09/02/2018, ORANGE, 55

07/02/2018, POMME, 65
08/02/2018, POMME, 45
09/02/2018, POMME, 67

07/02/2018, ANANAS, 54
08/02/2018, ANANAS, 56
09/02/2018, ANANAS, 51

Je voudrais obtenir le résultat ci-dessous :

Date, ID, Price, Différence
07/02/2018, ORANGE, 54, 54 (Différence avec la valeur J-1)
08/02/2018, ORANGE, 53, -1 (Différence avec la valeur J-1)
09/02/2018, ORANGE, 55, 2 (Différence avec la valeur J-1)

07/02/2018, POMME, 65,65 (Différence avec la valeur J-1)
08/02/2018, POMME, 45, -20 (Différence avec la valeur J-1)
09/02/2018, POMME, 67,22 (Différence avec la valeur J-1)

07/02/2018, ANANAS, 54,54 (Différence avec la valeur J-1)
08/02/2018, ANANAS, 56,2 (Différence avec la valeur J-1)
09/02/2018, ANANAS, 51,-5 (Différence avec la valeur J-1)

Pouvez-vous m'aider svp ?
Afficher la suite 

15 réponses

Répondre au sujet
yg_be 4603 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 février 2018 Dernière intervention - 7 févr. 2018 à 22:19
0
Utile
14
bonsoir, peut-être à peu près:
select  t1.Date, t1.ID, t1.Price, t1.Price-t2.Price as diff
from tatable as t1, tatable as t2
where t1.ID=t2.ID and t1.Date = t2.Date+1

 
yg_be 4603 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 février 2018 Dernière intervention > mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 8 févr. 2018 à 18:45
ah cela est très différent de ce que tu as expliqué au départ! peux-tu essayer d'être plus précis et plus factuel dès le départ?
yg_be 4603 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 février 2018 Dernière intervention > yg_be 4603 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 février 2018 Dernière intervention - 8 févr. 2018 à 19:03
peut-être ainsi:
select tp.ID, tp.Date, tp.Price-ifnull(t.Price,0)
from 
(select t.ID as ID, t.Date as Date, t.Price as Price, max(tm.Date) as prev
from testy.tatable as t 
left join testy.tatable as tm
on tm.ID = t.ID and tm.Date < t.Date
group by t.ID , t.Date , t.Price) as tp
left join testy.tatable as t
on t.ID = tp.ID and tp.prev = t.Date
order by tp.ID, tp.Date
mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention > yg_be 4603 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 février 2018 Dernière intervention - 8 févr. 2018 à 20:14
Désolé, je pensais que j'étais assez clair. Mais je ferai plus attention à l'avenir.

Voici le message que j'ai eu :
#1142 - La commande 'SELECT' est interdite à l'utilisateur: 'xxxxxxxxxxxxx'@'localhost' sur la table 'matable'
yg_be 4603 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 février 2018 Dernière intervention > mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 8 févr. 2018 à 20:56
je me demande si tu as bien adapté la requête à ton contexte (que tu n'as pas partagé).
mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 7 févr. 2018 à 23:27
J'ai essayé ca mais ca ne fonctionne pas comme je veux. Même s'il y a de l'idée.


SELECT t1.Date, t1.ID, t1.Price, t1.Price- t2.Price
FROM matable as t1, matable as t2
GROUP BY ID
ORDER BY ID
Commenter la réponse de yg_be