begin process at 2010 02 10 07:33:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une fonction

 > 

Calculer des différences sous certaines conditions


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Calculer des différences sous certaines conditions

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ée 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 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 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 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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales