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

Requêtes MySQL Discussion :

Calculer la moyenne des valeurs textes d'une colonne


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut Calculer la moyenne des valeurs textes d'une colonne
    Bonjour,

    Est il possible de calculer la moyenne des valeurs textes d'une colonne ?

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    colonne rep2 :
    évolution
    régression
    stable
    évolution
    évolution
    régression
    stable
    évolution
    évolution
    évolution
    pour obtenir le résultat :
    évolution : 60%
    régression : 20%
    stable : 20%

    j'ai essayé ça mais ça me renvoie un chiffre unique 1.3333 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT avg( total )
    FROM (
    SELECT rep2, count( * ) AS total
    FROM formulaire
    GROUP BY rep2
    ) AS f
    et aussi ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AVG(CAST(rep2 AS Decimal(18,2))) from formulaire group by rep2
    qui le renvoie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     AVG(CAST(rep2 AS Decimal(18,2)))
    0.000000
    0.000000
    0.000000
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Il te faut deux compteurs : celui pour chaque mot et celui pour toute la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  mot.rep2
        ,   mot.cpt / tot.nb 
    FROM    (   SELECT  rep2
                    ,   COUNT(*)    AS cpt
                FROM    formulaire
                GROUP BY rep2
            )   AS  mot
        ,   (   SELECT  COUNT(*)    AS nb
                FROM    formulaire
            )   AS  tot
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 31
    Points : 66
    Points
    66
    Par défaut
    Comme le dit al1_24, ici tu souhaites calculer un taux et non une "moyenne" à proprement parlé, donc pas de avg

    En reprenant ton exemple, si tu veux le pourcentage de évolution par exemple, il faudra faire 5 / 9 = 0.55 ou 5*100/9 pour avoir 55%.


    Je n'ai pas essayé la requête juste au dessus, mais elle a l'air correct.
    Cordialement.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    Cela fonctionne parfaitement

    Merci à tous les deux

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    create table `test` (
      `id`      integer      NOT NULL AUTO_INCREMENT primary key,
      `name`    varchar(255) NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`name`) values
      ('évolution'),
      ('régression'),
      ('stable'),
      ('évolution'),
      ('évolution'),
      ('régression'),
      ('stable'),
      ('évolution'),
      ('évolution'),
      ('évolution')
    --------------
     
    --------------
    select * from test
    --------------
     
    +----+------------+
    | id | name       |
    +----+------------+
    |  1 | évolution  |
    |  2 | régression |
    |  3 | stable     |
    |  4 | évolution  |
    |  5 | évolution  |
    |  6 | régression |
    |  7 | stable     |
    |  8 | évolution  |
    |  9 | évolution  |
    | 10 | évolution  |
    +----+------------+
    --------------
    select name, cast(100 * (count(name) / (select count(*) from test)) as decimal(5,2)) as Moyenne from test group by name
    --------------
     
    +------------+---------+
    | name       | Moyenne |
    +------------+---------+
    | évolution  |   60.00 |
    | régression |   20.00 |
    | stable     |   20.00 |
    +------------+---------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

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

Discussions similaires

  1. [Débutant] Compter des valeurs identiques sur une colonne Gridview
    Par dragoon25 dans le forum C#
    Réponses: 18
    Dernier message: 28/05/2014, 13h52
  2. Réponses: 8
    Dernier message: 26/08/2013, 18h36
  3. insertion des valeurs checkbox dans une colonne
    Par ronze dans le forum Langage
    Réponses: 0
    Dernier message: 23/06/2011, 16h33
  4. Liste des valeurs contenue dans une colonne
    Par TimDe dans le forum Excel
    Réponses: 5
    Dernier message: 15/08/2008, 17h11
  5. Des valeurs texte dans une formule
    Par Christophe D. dans le forum Excel
    Réponses: 5
    Dernier message: 15/12/2007, 16h25

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