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 et SQL. Discussion :

requete avec pourcentages


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 28
    Points : 22
    Points
    22
    Par défaut requete avec pourcentages
    Bonjour,

    J'ai une table avec 6 champs

    -Circuit
    -Point
    -Expert
    -Caractere
    -Intensite
    -Frequence

    Mon champ Frequence peut avoir 3 valeurs : Null, 0, 1

    Je voudrais faire une requete qui me permet d'avoir par (circuit, point et Caractere), l'Intensite moyenne et le pourcentage ou Frequence vaut 1 par exemple.

    Circuit Point Expert Caractere Intensite Frequence
    1 1 1 AAA 6 0
    1 1 2 AAA 3 1
    1 1 3 AAA 3 1


    je voudrais obtenir

    Circuit Point Caractere moyenne(Intensite) moyenne(Frequence=1)
    1 1 AAA 4 66%


    pour le moment j'arrive à obtenir les 4 premiers champs mais je bloque sur le dernier

    Voici ma requete qui donne

    Circuit Point Caractere moyenne(Intensite)
    1 1 AAA 4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    texte_SQL = "SELECT D.[Circuit], D.[Point], AVG(D.[Intensite]), D.[Caractere] FROM [Donnees$] D GROUP BY D.[Caractere], D.[Point], D.[Circuit];"

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    je ne vois pas bien où est le problème, a priori en écrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Avg([Frequence]*100) AS Freq
    on obtient la fréquence en % sans tenir compte des valeur Null.

    On peut aussi tenir compte des valeurs Null et leur affecter une valeur par défaut, par exemple 0,5 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Avg(nz([Frequence],0.5)*100) AS Freq
    bonne journée,

    Philippe

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Merci pour ta reponse. Je reviens à la charge après un WE sans ordinateur : donc je n'ai pas beaucoup avancé

    En fait il ne me faut pas 1 pourcentage mais 3 :

    - le pourcentage ou Frequence = 0
    - le pourcentage ou Frequence = 1
    - le pourcentage ou Frequence = Null

    Si je reprends mon exemple :

    Circuit/ Point/ Expert /Caractere /Intensite /Frequence
    1 /1 /1 /AAA /6 /0
    1 /1 /2 /AAA /3 /1
    1 /1 /3 /AAA /3 /1


    Je voudrais pour le point 1 du circuit 1 et le caractère AAA

    Circuit/ Point /Caractere /Moyenne(Intensite) /%(Frequence(0)) /%(Frequence(1)) / %(Frequence(Null))

    1 /1 /AAA /4 /33% /66% /0%

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Voici une requete qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
        texte_SQL = "SELECT D.[Circuit], D.[Point], AVG(D.[Intensite]) AS Moyenne, D.[Caractere], COUNT(D.[Caractere]) AS Nbr, " & _
                    "format(SUM(IIF(D.[Frequence]=0,1,0))/Nbr, '#0%') AS FreqBouffee, " & _
                    "format(SUM(IIF(D.[Frequence]=1,1,0))/Nbr, '#0%') AS FreqContinue, " & _
                    "format(SUM(IIF(D.[Frequence]=null,1,0))/Nbr, '#0%') AS FreqNull " & _
                    "FROM [Donnees$] D " & _
                    "WHERE (D.[Circuit]=" & intCircuit & " AND D.[Point]=" & intPoint & ")" & _
                    " GROUP BY D.[Caractere], D.[Circuit], D.[Point];"
    Je ne sais pas si cela est fait dans les règles de l'art ?

    Votre avis ?

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    mis à part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    format(SUM(IIF(D.[Frequence]=null,1,0))/Nbr, '#0%')
    qui ne doit pas fonctionner, mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    format(SUM(IIF(D.[Frequence] Is Null,1,0))/Nbr, '#0%')
    et le fait que l'on évite, en général, de faire du formatage de données dans une requête mais plutôt dans l'IHM.

    Philippe

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

Discussions similaires

  1. [AC-2013] Requete avec regroupements multiples (tranches en pourcentage)
    Par madikeyra dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 21/08/2013, 18h57
  2. requete avec la valeur NULL
    Par Hinkel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/11/2008, 16h39
  3. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  4. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34
  5. Requete avec des décimales
    Par Sandrine75 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/06/2003, 10h18

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