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

Développement SQL Server Discussion :

Calcul d'un rendement


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    methodes
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : methodes

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Calcul d'un rendement
    Bonjour

    Je travaille sous SQL SERVER
    Je cherche à calculer un rendement d'un réseau.
    Les informations sont regroupées sur une table 'Info_Reseau'
    Les champs sont: date, priorité, valeur

    J'ai besoin de calculer sous forme de pourcentage, par mois, le rapport entre la somme des valeurs de priorité 2 et la somme des valeurs de priorité 3

    Pour ce faire, j'ai écris la requête suivante:

    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
    Select 
             month(DateStatUtc)
             ,sum(valeur)*100/
              ( Select 
                          sum(valeur)
                From 
                         Info_Reseau
                where
                          priority=2
                and 
                           DateStatUtc between '2018-01-01' and '2019-01-31'
               )
    from
           Info_Reseau
    where
              priority=3
    and 
              DateStatUtc between '2018-01-01' and '2019-01-31'
    group by
               month(DateStatUtc)
    Au résultat, la requête me retourne des valeurs erronées.

    Quelqu'un peut-il me dire où je me plante

    merci pour votre aide

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    J'imagine que votre problème vient du fait que, votre dénominateur n'étant pas corrélé au numérateur, vous divisez chaque les mois par l'ensemble des données de priorité de 2 de l'année.
    Donc au lieu de filtrer sur DateStatUtc between '2018-01-01' and '2019-01-31' dans le dénominateur, il faut corréler le mois au numérateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select month(r1.DateStatUtc)
         , sum(r1.valeur)*100/( Select sum(valeur) From Info_Reseau r2 where r2.priority=2 and month(r2.DateStatUtc) = month(r1.DateStatUtc))
      from Info_Reseau r1
     where r1.priority=3
       and r1.DateStatUtc between '2018-01-01' and '2019-01-31'
     group by month(r1.DateStatUtc)
    Mais de toute façon vous n'avez pas besoin de sous-requête, un CASE suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select month(r1.DateStatUtc)
         , sum(case when r1.priority = 3 then r1.valeur end)*100/sum(case when r1.priority = 2 then r1.valeur end)
      from Info_Reseau r1
     where r1.priority in (2, 3)
       and r1.DateStatUtc between '2018-01-01' and '2019-01-31'
     group by month(r1.DateStatUtc)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    methodes
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : methodes

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour Skuatamad

    Merci pour la réponse.

    Vous m'avez éclairé. J'avais bien pensé à utiliser le case mais je ne voyais pas comment l'écrire. Du coup je suis parti sur les sous-requête.

    En tout cas, vous m'avez apporté la solution

    merci encore

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

Discussions similaires

  1. Numéro du mois pour calcul d'un taux de rendement
    Par Superhandz dans le forum Deski
    Réponses: 17
    Dernier message: 08/07/2011, 14h34
  2. Calcul de rendement grâce au solveur
    Par delma dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/02/2011, 10h24
  3. Calculer le rendement dans MATLAB
    Par nadim216 dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/09/2009, 16h25
  4. Calculer un rendement
    Par remilecool dans le forum SQL
    Réponses: 2
    Dernier message: 12/04/2009, 23h30
  5. Calcul de rendements
    Par bb888 dans le forum SAS Base
    Réponses: 7
    Dernier message: 21/11/2008, 00h06

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