calcul de moyenne sur une table sql [ résolu ]

calcul de moyenne sur une table sql [ résolu ] - PHP - Programmation

Marsh Posté le 07-01-2003 à 23:49:55    

salut à tous,
je cherche à faire un classement selon des notes.
Je m'explique: j'ai dans une table un champs avec des nom d'élèves et un champs avec des notes.
par exemple:
 

Citation :

david  |  6
eric   |  12
julie  |  15
david  |  14
eric   |  11
julie  |  13
david  |  8

 
 
Donc au fur et à mesure on se retrouve avec plusieurs fois le même nom avec des notes différentes et ce que je cherche à faire c'est le calcul des moyennes par élèves et les classer dans l'ordre des moyennes.
Si il y a un malin pour m'aider parceque là je n'ose même pas montrer le script que j'ai écrit c'est un vrai massacre :cry:.


Message édité par mecano1 le 09-01-2003 à 00:05:28
Reply

Marsh Posté le 07-01-2003 à 23:49:55   

Reply

Marsh Posté le 07-01-2003 à 23:51:31    

http://www.mysql.com/doc/en/Group_by_functions.html
 
[:sh@rdar]


Message édité par beleg le 07-01-2003 à 23:52:22
Reply

Marsh Posté le 08-01-2003 à 00:07:00    

je suis allé sur ce site, c'est interressant en effet, j'ai vu la commande AVG() qui permettrait de faire une moyenne si j'ai bien compris, elle peux me servir dans ce cas et si oui il faudrait me donner un exemple concret pour que je comprenne, merci.

Reply

Marsh Posté le 08-01-2003 à 23:22:55    

$calcul_moyenne = mysql_query("SELECT nom, avg(result_classe) from $table GROUP BY nom ORDER BY avg(result_classe)" );
 
while ($classement = mysql_fetch_row($calcul_moyenne))
{
echo "
<font face='Arial' size='5'>
<center>
<TABLE CELLPADDING=4 CELLSPACING=0 width='60%'>
<TR BGCOLOR='#454545'>
<TD>
<b><FONT COLOR='#5BFF79'>$classement</FONT></b></font>
</TD>
</TR>
</table>
</center>
</font>
";
}
 
--------------------------------
voilà j'ai essayé de mettre en pratique, j'ai donc le premier champs qui s'appelle "nom" et celui ou il y a les notes qui s'appelle "result_classe".
Ensuite je me suis dit que j'allait faire une boucle avec fetch_row pour tous les afficher, mais je me retrouve avec une erreure:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource
ensuite j'ai essayé avec fetch_array mais c'est pareil.
Après ça j'ai essayé d'afficher avec $classement[0], mais pas de changement.
C'est juste ce que j'ai écrit ou alors il y a une boulette?
En tout cas je n'ai rien trouvé sur le détail de cette fonction AVG() qui m'a l'air bien pratique :p

Reply

Marsh Posté le 08-01-2003 à 23:42:18    

mecano1 a écrit :

$calcul_moyenne = mysql_query("SELECT nom, avg(result_classe) from $table GROUP BY nom ORDER BY avg(result_classe)" );


 
Tu ne peux utiliser une fonction d'agrégat que dans la clause SELECT, d'où l'erreur que tu avais je pense. Essaie ça :
 

mysql_query("SELECT nom, avg(result_classe) AS moyenne from $table GROUP BY nom ORDER BY moyenne" );



---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 09-01-2003 à 00:01:05    

jose pensé que tu as testé ta requete  :whistle:  
 
donc je passe directement a :
 

Code :
  1. <b><FONT COLOR='#5BFF79'>".$classement["moyenne"]."</FONT></b></font>


 

Citation :

Note that if you are using MySQL Version 3.22 (or earlier) or if you are trying to follow ANSI SQL, you can't use expressions in GROUP BY or ORDER BY clauses. You can work around this limitation by using an alias for the expression:  
 
mysql> SELECT id,FLOOR(value/100) AS val FROM tbl_name
    ->        GROUP BY id,val ORDER BY val;


[:sh@rdar]


Message édité par beleg le 09-01-2003 à 00:04:12
Reply

Marsh Posté le 09-01-2003 à 00:03:30    

sielfried je t'aime, si si :love:
ca fonctionne trop bien comme ça, mais j'avoue ne pas comprendre pourquoi, mais bon je suis trop content :bounce:
merci encore

Reply

Sujets relatifs:

Leave a Replay

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