IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

calcul de moyenne par colonne [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut calcul de moyenne par colonne
    bonjour je cherche a faire une calcul de moyenne, en fonction de la rate je m'explique

    j'ai mis un systeme de rating sur profil
    j'ai donc le choix entre les notes 5 4 3 2 ou 1
    et je voudrais faire une moyenne des votes de note 5 puis celle du nombre 4 etc ...

    le restant du code je sais comment faire pour avoir la moyenne génerale, mais la j'ai essayer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql_c = mysql_query("Select AVG(rate) from tbl_rating where user_id='$id_user' GROUP BY rate='5'");
    $sql_nv = mysql_fetch_array($sql_c);
    mais ça m'affiche array

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu veux plutôt la répartition des notes non ?
    Parce que la moyenne des notes 5 c'est 5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT rate, COUNT(rate) / (SELECT COUNT(*) AS total FROM tbl_rating tt) FROM tbl_rating t1 GROUP BY rate
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    ce que je veux c'est calculé le nombre de vote sur la note 5
    calculé le nombre de vote sur la note 4 etc

    et aprés recupérer la moyenne de tout

    exemple:
    il y a 5 votant qui ont mis la note 4 = donc 5 X 4 = 20
    7 votant qui ont mis la note de 5 = donc 5 X 7 = 35
    2 votant qui ont mis la note de 3 = donc 2 X 6 = 6
    1 votant qui ont mis la note de 2 = 2 X 1 = 2
    et 100 votant qui ont mis la note de 1 = 1 X 100 = 100

    donc
    (100 + 2 + 6 + 35 + 20) le resultat une note sur 5

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton détail, je ne vois pas trop à quoi ça va te servir mais c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT rate, SUM(rate) FROM tbl_rating  GROUP BY rate ORDER BY rate
    La moyenne globale c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AVG(rate) FROM tbl_rating
    Attention à la façon de récuperer le résultat en PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql_c = mysql_query("SELECT rate, SUM(rate) as somme FROM tbl_rating  GROUP BY rate ORDER BY rate");
    while($row = mysql_fetch_assoc($sql_c)) {
        echo '<p>' . $row['rate'] . ' : ' . $row['somme'] . '</p>';
    }
    Au passage l'extension mysql est obsolète, il faut passer à PDO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    sayer je montre la solution qui peut servir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $moy = mysql_query("Select SUM(rate) as total from tbl_rating where user_id='$id_user'"); //on comptabilise le nombre de vote additionné destiné à user_id et on lui attribue un nom
    $tot = mysql_fetch_array($moy);
    $moy = $tot["total"];
     
    $sql_v = mysql_query("Select COUNT(user_votant) as tota from tbl_rating where user_id='$id_user'"); on comptalise le nombre de votant
    $sql_nbv = mysql_fetch_array($sql_v);
    $total = $sql_nbv["tota"];
     
    //On affiche le résultat
    $moyenned = $moy / $total; //on divise la somme additionnée par le nombre de votant
    PS: Mysql_query est encore bon sur mon serveur que j'ai retrogradé en version 5.4

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Mysql_query est encore bon sur mon serveur que j'ai retrogradé en version 5.4
    C'est un peu comme si tu disais que Windows 95 n'est pas obsolète car tu as mis l'horloge du PC sur 1990.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] calcul de moyenne par ligne
    Par stefano dans le forum WinDev
    Réponses: 11
    Dernier message: 28/06/2014, 00h37
  2. [XL-2010] calcul de moyenne par ligne
    Par le_normand dans le forum Excel
    Réponses: 2
    Dernier message: 08/11/2013, 18h46
  3. Calculer la moyenne par intervalle de 5 minutes
    Par nngoned dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/07/2013, 14h37
  4. [Oracle] Calcul de moyenne par module
    Par naazih dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/04/2006, 14h38
  5. Réponses: 5
    Dernier message: 29/12/2005, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo