Problème dans une requette sql

jbenz -  
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai des données comme suit:
chaque personne a une note sur 100
et la troisième colonne désigne si cette personne est évalué ou pas encore

nom | note | de
PERS1 | 0 | 0
PERS2 | 30 | 1
PERS3 | 10 | 1
PERS4 | 30 | 1
PERS5 | 44 | 1

je voudrais avoir une requête qui pourrais me faire la moyenne des notes mais sans calculer ceux qui n'ont pas été évalué grâce a la colonne de dans la table

dans ce cas la requête doit calculer 114/4 donc le résultat c'est 28.5

j'ai déjà tenter une requête mais celle la calcule 114/5 et le résultat obtenu c 22.8 ce qui est faux

voici ma requête:
select ROUND(avg(note)) from tab_note where de<>0

Merci


A voir également:

2 réponses

Utilisateur anonyme
 
Bonjour,

Votre champ de doit être un varchar non ?
Car sinon ça marche, le résultat est bien 29

Si de est un varchar la requête donc
select ROUND(avg(note)) from tab_note where de<>'0'
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

2ème champ doit être valeur ou NULL

Donc, une personne pas évaluée, note contient NULL (pa sle texte, mais l'attribut NULL qui est sélectionnable comme caractéristique du contenu par défaut à la création de l'enregitrement).

Ainsi, pour sortir les notes:

SELECT note FROM tab_note WHERE note IS NOT Null

vous stockez dans un tableau $tabNotes par exemple et vous traitez le tableau:
- nombre de valeurs:

$nbvaleurs = count($tabNotes);

une ch'tite fonction qui fait la somme des valeurs, puis pour la moyenne, c'est facile ensuite...

Avantage de ma solution: 2 champs au lieu de trois. Car personne pas évaluée, son champ note est NULL, personne évaluée, champ contient une valeur.

A+
-1