Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Calculer des différences sous certaines conditions [ Archives / Problème avec une fonction ] (JoeyBlack)

mardi 13 décembre 2005 à 19:24:25 | Calculer des différences sous certaines conditions

JoeyBlack

Bonjour
J'ai une table de type : date Date, valeur Float. J'aimerai créer une nouvelle table contenant le même type de champs : date Date, valeur2 Float.
Je veux que valeur2(date) = valeur(date)-valeur(date précédente), la date précédente n'étant pas forcement égale à la date -1 mais est le maximum des dates précédent la date en question.
Quelqun (un bon ;) )peut-il m'aider à faire une requete rapide a faire sur un nombre important de données (700000) ?
Merci bcp
JoeyBlack


mardi 13 décembre 2005 à 20:52:16 | Re : Calculer des différences sous certaines conditions

nhervagault

Administrateur CodeS-SourceS
Salut

Peux tu mettre un exemple de temple départ et arrive
car un exemple vaut mieux qu'un long discours.

Et mettre le type de base

thanks

mardi 13 décembre 2005 à 21:37:33 | Re : Calculer des différences sous certaines conditions

JoeyBlack

Départ :
2005-12-02  30.46
2005-12-05  29.95
2005-12-06  30.34
2005-12-07  30.12
2005-12-08  29.81
2005-12-09  29.98
2005-12-12  29.89
Et je veux à l'arrivé :
2005-12-05  -0.51
2005-12-06  0.39
2005-12-07  -0.22
2005-12-08  -0.31
2005-12-09  0.17
2005-12-12  0.09
Par contre je suis un peu débutant dans tout ce qui est base de données. Le "type" de base je sais pas trop de quoi tu parles, en tout cas j'utilise MySQL 5.0.
J'espère que c tout ce que tu voulais savoir :S.







mardi 13 décembre 2005 à 23:30:54 | Re : Calculer des différences sous certaines conditions

nhervagault

Administrateur CodeS-SourceS
C'est assez chaud à faire

car les bases de données ne sont pas faites pour faire ce genre de traitement

Pour faire cela il faudrait je pense utiliser les procédures stockées ou un programme qui est plus adaptée car les BDD ne sont pas faite pour des traitements entre lignes mais entre table ;-)
 

et de faire la liasons dessus
num est le numero de la ligne
il y a peut etre une fonction sql pour le faire

Ensuite

faire une requete du style

select A1, B2-A2,b.num, a.num from A, B  where A.num = B.Num +1

Attention l'ordre des lignes est important aussi, je ne maitrise pas les focntions avancées de mysql désolé

Pour les procedures stockées je maitrise pas celle de mysql



mercredi 14 décembre 2005 à 10:32:14 | Re : Calculer des différences sous certaines conditions

aieeeuuuuu

salut,

une solution un peu tordue mais qui pourrait bien marcher si elle est bien realisee, consisterait a creer une table temporaire contenant en plus des deux champs de ta table d'origine, un champ ID autoincrementé.

ensuite tu insere tes données classées par ordre de date dans ta table.

puis pour inserer dans ta table finale, tu fais la soustraction entre tes valeurs de la table temporaire ID n et de la table temporaire ID n-1.

une requete du genre

INSERT INTO MaTableFinale
SELECT


mercredi 14 décembre 2005 à 10:34:47 | Re : Calculer des différences sous certaines conditions

aieeeuuuuu

mouarfff ?!?

elle est passée ou la fin de mon post ???

bon je disais donc pour la requete :

INSERT INTO maTableFinale

SELECT T1.date, (T1.valeur - T2.valeur)

FROM tableTemporaire T1, tableTemporaire T2

WHERE T1.ID = T2.ID + 1

et ca ca devrait fonctionner.


jeudi 15 décembre 2005 à 00:58:09 | Re : Calculer des différences sous certaines conditions

JoeyBlack

Merci, logiquement ca devrait marcher. (le temps que je trouve les commandes pour creer une table temporaire etc...)
Une dernière chose, bcp plus simple...
Si je veux créer une nouvelle table (date, valeur2) contenant les valeurs de ma table (date,valeur) mais telle que valeur2 = valeur - moyenne(valeur), la moyenne étant celle de toute la table...
Il y a un moyen de déclarer des variables temporaires dans une requete ?
Merci pour vos réponses en tous cas, ca m'aide beaucoup :)


jeudi 15 décembre 2005 à 08:51:33 | Re : Calculer des différences sous certaines conditions

nhervagault

Administrateur CodeS-SourceS
Salut

AVG --> moyenne je crois
sinon
(sum(*)/count(*)) as valeur2
Group by cléprimaire de la table


bon courage

jeudi 15 décembre 2005 à 09:57:28 | Re : Calculer des différences sous certaines conditions

aieeeuuuuu

oui, c'est ca, pas besoin de varable temporaire dan sta requete :

tu fais juste

INSERT INTO NouvelleTable

SELECT date, valeur - (SELECT AVG(valeur) FROM MaTable) FROM MaTable


jeudi 15 décembre 2005 à 09:59:13 | Re : Calculer des différences sous certaines conditions

aieeeuuuuu

quoique directement

INSERT INTO maNouvelleTable
SELECT date, valeur - AVG(valeur) FROM MaTable

va peut etre fonctionner, mais je ne suis pas sur. ?!?



Cette discussion est classé dans : date, valeur, calculer, conditions, différences


Répondre à ce message

Sujets en rapport avec ce message

Connaitre la valeur dans un INSERT [ par PunkDude424 ] Salut, je développe une application de gestion de rendez vous avec VB et SQL Server....j'ai une table rendezvous qui contient les informtions du rende calculer l'age d'une personne [ par slante ] HelloJ'ai creer une table en Oracle XE pour un arbre genealogique, j'ai besoin d'une query qui retourne l'age des personnes :vivantes, base sur la dat Ordonner selon une valeur [ par Isengard ] Bonjour ! J'ai un petit problème assez énervant ! Je fais un système de réféncement d'évenement avec génération d'une frise chronologique qui fait ap SELECT [ par tjarvl ] Salut j'ai une table ou je doit afficher  la somme ,le maximum et la valeur correspondante au max d'une colonne; Je ne sais pas comment afficher la va Sélectionner 2 fois le meme champ mais avec 2 conditions différentes [ par cispo ] Bonjour, Comme je l'ai mis dans le titre, je cherche à effectuer une requete qui sélectionne 2 fois le meme champs mais avec 2 conditions différentes Problème avec une requête [ par emmanuel9 ] Bonjour à tous, J'ai une table Personne avec dans cette table une colonne "date de création" et ma requete ressemble à ca : "SELECT * FROM PERSONNE WH Ajouter un an à une date (renouvelable chaque année) sous access [ par totolaterreur ] Salut J'ai des requêtes SQL à faire sous access et dans les requêtes, je dois comparer des dates à une seule. Par exemple, je dois comparer 07/06/2006 XML et Requete [ par blueangel ] blueangel12@yahoo.com       13/02/2006<b DateTime SQL problem [ par toubal_99 ] salutg un problem avec une requette SQL suivanteSoins.SQL.Clear;Soins.SQL.Add('SELECT * from Soins where Soins.Date_Heure= :Date_Heu Vérifier la valeur du champs [ par Goldeneye007 ] Salut,Je voudrai vérifier la valeur d'un champ session ("uid") que j'ai fais apparaitre dans mon formulaire asp.net par le biais d'une zone texte comm


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.