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

Langage SQL Discussion :

Requête sql, moyenne pondérée


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Requête sql, moyenne pondérée
    Bonjour,

    Actuellement je calcule ma moyenne ainsi
    SUM(notes.note) / COUNT(notes.note) as moyenne,
    Je souhaiterais plutôt calculer la moyenne pondérée.
    Les notes vont de 1 à 5.
    Je ne vois pas comment rediger ma requête.

    Ex :

    2 internautes votent 3/5
    4 internautes votent 4/5
    3 internautes votent 5/5


    La moyenne pondérée = ( 3*2 + 4*4 + 3*5 ) / (2+4+3) = (6 + 16 + 15) / (9) = 37/9 = 4.1111
    La moyenne basique que je fais pour le moment = ( 3+4+5 ) / 3 = 12 / 3 = 4

    Comment rédiger ma requête pour calculer la moyenne pondérée, telle est ma question.
    Merci de votre aide.

    Pour info, ma moyenne basique :
    SELECT
    COUNT(notes.note) as votes,
    SUM(notes.note) / COUNT(notes.note) as moyenne,
    joueurs.id_joueur
    FROM ...
    Merci d'avance pour votre aide.

    Julien

  2. #2
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    SQL> select * from notes;
     
          NOTE
    ----------
             3
             3
             4
             4
             4
             4
             5
             5
             5
     
    9 ligne(s) sélectionnée(s).
     
    SQL> select sum(note*A)/sum(A) from (select note, count(*) A from notes group by note);
     
    SUM(NOTE*A)/SUM(A)
    ------------------
            4,11111111
    Je penche, donc je suis

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    CREATE TABLE T_NOTATION_NTT
    (NTT_INTERNAUTE VARCHAR(32),
     NTT_VOTE       INT)
     
    INSERT INTO T_NOTATION_NTT VALUES (1, 3)
    INSERT INTO T_NOTATION_NTT VALUES (2, 3)
    INSERT INTO T_NOTATION_NTT VALUES (3, 4)
    INSERT INTO T_NOTATION_NTT VALUES (4, 4)
    INSERT INTO T_NOTATION_NTT VALUES (5, 4)
    INSERT INTO T_NOTATION_NTT VALUES (6, 4)
    INSERT INTO T_NOTATION_NTT VALUES (7, 5)
    INSERT INTO T_NOTATION_NTT VALUES (8, 5)
    INSERT INTO T_NOTATION_NTT VALUES (9, 5)
     
    SELECT CAST(SUM(N * NTT_VOTE) AS FLOAT) /
           CAST((SELECT COUNT(*) 
                 FROM   T_NOTATION_NTT) AS FLOAT) AS P
    FROM   (SELECT COUNT(*) AS N, NTT_VOTE
            FROM   T_NOTATION_NTT
            GROUP BY NTT_VOTE) AS T
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Requête sql server pour calculer moyenne entre deux dates
    Par JérômeKGS dans le forum Développement
    Réponses: 2
    Dernier message: 17/04/2015, 12h04
  2. Réponses: 3
    Dernier message: 16/07/2013, 15h07
  3. [MySQL] Moyenne Pondéré CUMULE SQL
    Par miaouu dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 24/12/2012, 19h44
  4. Réponses: 5
    Dernier message: 13/03/2009, 10h57
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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