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 :

Calcul pourcentage dans requête selon le nombre de répétition


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Calcul pourcentage dans requête selon le nombre de répétition
    Bonjour,

    Je m'explique, j'ai une base avec plusieurs champs dont un ou les valeurs peuvent être uniques ou répétées plusieurs fois.
    J'aimerais obtenir la part des valeurs uniques vs la part des valeurs répétées plusieurs fois, et cela sur le nombre de valeurs distinctes.

    Ex : imaginons que les valeurs sont celles-ci
    A B B C C D D D
    Alors je souhaite que l'opération soit A/le nb de lettre distincte = 25%

    Quelqu'un aurait-il une idée ?

    Merci beaucoup

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Quelque chose comme ça :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select ma_colonne
         , count(*) as nbr
         , sum(count(*)) over() as Tot
         , cast(count(*) * 100 / sum(count(*)) over() as decimal (5,2))
           as Pct
    from T1
    group by ma_colonne

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse !

    Je vois l'idée mais ce n'est pas exactement ça.
    Ce que je voudrais c'est avoir 2 groupes et connaitre au global la part des lettres qui n'existent qu'une fois vs la part des lettres répétées au moins 2 fois, et non le poids de chaque lettre.
    Dans mon exemple cela donne :
    lettres répétées 1 fois : 25% (A) --> 1/4
    lettres répétées au moins 2 fois : 75% (B, C, D) --> 3/4

    Merci beaucoup

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Même principe, mais il faut encapsuler ma requête :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select sum(case when sub.nbr = 1 then 1 end)   as uniq
         , sum(case when sub.nbr > 1 then 1 end)   as mult
         , sum(case when sub.nbr = 1 then 1 end) * 100 / count(*) as PctU
         , sum(case when sub.nbr > 1 then 1 end) * 100 / count(*) as PctM
    from (select ma_colonne
               , count(*) as nbr
          from T1
          group by ma_colonne
         ) as sub

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    @dthcds : merci de penser à mettre le sujet à "résolu" si c'est bien le cas.
    Ca permet aux autres participants de savoir si la solution est applicable

  6. #6
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oui merci ça fonctionne !
    Je n'ai pas fait exactement comme ça mais ça m'a vraiment bien aidé.

    Encore merci

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

Discussions similaires

  1. SQL calculer pourcentage dans une requête
    Par phcm971 dans le forum HyperFileSQL
    Réponses: 13
    Dernier message: 29/10/2012, 11h15
  2. calcul de pourcentage dans requête
    Par Eruil dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/07/2007, 15h29
  3. calcul pourcentage dans une requete imbriquée
    Par timal78 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2007, 14h28
  4. Calcul somme dans requête
    Par froutloops62 dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2006, 16h11
  5. Calcul pourcentage dans un sous formulaire
    Par kriskiller dans le forum Access
    Réponses: 9
    Dernier message: 11/07/2006, 09h45

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