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

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Débutant
    Inscrit en
    juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Débutant
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2018
    Messages : 5
    Points : 6
    Points
    6

    Par défaut agregat avec sum si et avg si

    Bonjour,
    je souhaite faire une somme si et une moyenne si sur une colonne en tenant compte de certaines conditions.
    par exemple je veux faire la somme de var 3 lorsque la valeur est supérieur à 100 et la moyenne de var 4 lorsque c'est supérieur à 40 ensuite je veux compter le nombre d'element

    resultzt :
    count = 6
    somme var 500





    data toto;
    format var1 $2. var2 $2. var3 var4 var5;
    input var1 var2 var3 var4 var5;
    cards;
    a1 b1 100 12 15
    a2 b5 200 25 30
    a2 b2 50 20 14
    a3 b1 54 85 96
    a3 b3 300 400 12
    a3 b4 1 2 3
    ;
    run;


    merci d'avance pour vos aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : décembre 2013
    Messages : 198
    Points : 636
    Points
    636

    Par défaut

    Bonjour,

    Il y a pleins de solutions pour réaliser cela, voici deux exemple avec une ou plusieurs PROC SQL :

    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
     
     data toto;
     format var1 $2. var2 $2. var3 var4 var5;
     input var1 var2 var3 var4 var5;
     cards;
     a1 b1 100 12 15
     a2 b5 200 25 30
     a2 b2 50 20 14
     a3 b1 54 85 96
     a3 b3 300 400 12
     a3 b4 1 2 3
     ;
     run;
     
     /* plusieurs procédures SQL */
     Proc SQL;
     Create table toto2 as
     Select sum(var3) as sommVar3
     from toto
     Where var3 > 100;
     
     Create table toto3 as
     Select AVG(var4) as MeanVar4
     from toto
     Where var4> 40;
     
     Create table toto4 as
     Select count(*) as Nb as NB
     from toto; 		
     quit;
     
     
      /* Une procédure SQL */
     Proc SQL;
     Create table toto5 as
     Select sum(case when var3 > 100 then var3 else . end) as sommVar3,
    		AVG(case when var4 > 40 then var4 else . end) as MeanVar4,
    		count(*) as Nb
     from toto;
     quit;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Débutant
    Inscrit en
    juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Débutant
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2018
    Messages : 5
    Points : 6
    Points
    6

    Par défaut Remerciements

    Merci pour ta réponse Flo,
    Ca m'aide beaucoup.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    mai 2011
    Messages
    675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2011
    Messages : 675
    Points : 1 562
    Points
    1 562

    Par défaut

    Si tu as beaucoup de chose de ce genre à faire sur la même table, tu pourrais t'aventurer par une solution via des objets hash, mais ce sera du code à la main.

Discussions similaires

  1. Comment formater le resultat avec 2 chiffres avec SUM de SQL
    Par sondo dans le forum Bases de données
    Réponses: 15
    Dernier message: 23/06/2006, 15h41
  2. [SQLServer] Requête avec SUM
    Par FzF dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/05/2006, 17h19
  3. Réponses: 3
    Dernier message: 22/12/2005, 18h47
  4. [SQL Access] Problème avec Sum()
    Par badgam piero dans le forum Access
    Réponses: 5
    Dernier message: 12/12/2005, 17h00
  5. Pb récupération d'une somme avec SUM()
    Par momo99 dans le forum InterBase
    Réponses: 3
    Dernier message: 01/11/2005, 16h38

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