[SQL] Merci de m'aider à faire cette requete... facile pour un pro ;)

Merci de m'aider à faire cette requete... facile pour un pro ;) [SQL] - Programmation

Marsh Posté le 19-06-2001 à 22:31:15    

Voila, donc j'ai une table
TRG(#CodeCellule,#date,#CodeEquipe,#ReferencePiece,trg) sachant que le TRG est une valeur numerique...
 
J'aimerais avoir les 12 valeurs annuelles moyennes du TRG pour une cellule mais toutes pièces et equipes confondues....
C'est pour faire un graph de l'evolution annuelle de cette valeur, avec donc une valeur/mois.
 
Ca doit pas etre si compliqué, mais je ne sais pas trop comment faire :(
 
MERCI à ce qui trouvent ! ;)

Reply

Marsh Posté le 19-06-2001 à 22:31:15   

Reply

Marsh Posté le 19-06-2001 à 23:20:37    

je ne suis pas sur de la syntaxe d'un 'inferieur ou egal'... je les ai mis comme en C...
pour les données variables, j'ai écrit ca comme en php... les $truc sont des variables...
 
pour chaque mois, tu fais:
 
select trg from TRG where #date <= '$mois-31-$year' AND #date >= '$mois-01-$year' AND #CodeCellule = '$codecellule';
 
tu fais la moyenne des resultats de la requete...

Reply

Marsh Posté le 20-06-2001 à 09:04:36    

C'est quoi ton SGBD ?

Reply

Marsh Posté le 20-06-2001 à 10:09:22    

sous Oracle, ca donnerait un truc pareil:
 
select to_date(to_char(date,'mmyyyy'), 'mmyyyy'), avg(trg)
group by to_date(to_char(date,'mmyyyy'), 'mmyyyy')
 
 
le to_date(to_char... permet de ramener la date au mois près.
 
A toi de trouver l'équivalent dans ton SGBD


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 20-06-2001 à 10:37:56    

Aloreuh...
 

Code :
  1. select   #CodeCellule,
  2.          datepart(yy, #date),
  3.          datepart(mm, #date),
  4.          avg(trg)
  5. from
  6.          TRG
  7. where
  8.          datepart(yy, #date) = 2001
  9. group by
  10.          #CodeCellule,
  11.          datepart(yy, #date),
  12.          datepart(mm, #date)


 
Cette requête te donne la valeur moyenne de trg pour tous les mois par cellule.
 
Attention, si tu as des données de plusieurs années dans ta table, il te faut rajouter les lignes en italique dans la requête, pour n'avoir qu'une année (ici, 2001).
 
Bien évidemment, c'est la version Sybase, pour passer sous Oracle, voir le post de Jupiler.
 
EDIT : si tu veux toutes les années et tous les mois, tu prends toutes les lignes en italique et pas celles en gras.
 
Si tu ne veux qu'une année, tu ne prends que les lignes en gras et pas celles en italique.
 
En plus de la requête "de base" évidemment.

 

[edit]--Message édité par Fred999--[/edit]

Reply

Marsh Posté le 20-06-2001 à 10:47:04    

FRED999 > Euh.. datepart() c pas un truc de sql server ?
Sinon, pourquoi tu recupere aussi l'année ?
Pis manque pas un truc là ?  
D'après ce ke jai compris.. le where porte sur CodeCellule et pas sur l'année uniquement...

 

[edit]--Message édité par wouatouwouatou--[/edit]

Reply

Marsh Posté le 20-06-2001 à 10:53:13    

ben il a expliqué que ce qui est en italique
permet de filtrer sur l'année
 
Pourquoi un where sur codecellule?


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 20-06-2001 à 11:06:48    

Ben je croyais ke c t sur une cellule kil voulais les moyennes ?
Bien sur par cellule et par mois d'année aussi :D

Reply

Marsh Posté le 20-06-2001 à 11:17:27    

je te le concède, c'est pas très clair


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 20-06-2001 à 11:44:47    

Euh les gars j'ai édité, ça devrait être plus compréhensible.

Reply

Marsh Posté le 20-06-2001 à 11:44:47   

Reply

Marsh Posté le 20-06-2001 à 23:01:28    

Un GRAND merci à TOUS pour vos réponses !
 
J'y ai trouvé mon bonheur... ;)
 
Et merci d'avoir expliqué, c'est super sympa !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed