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

SAS Base Discussion :

Compte au sein d'un groupe


Sujet :

SAS Base

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut Compte au sein d'un groupe
    bonjour,

    j'essais de trouver un count particulier.
    Je connais la structure retain.. by... if first.. mais je ne pense pas bien m'en servir. J'aimerai que le code me créer une variable qui change de compte à chaque fois qu'il croise la même modalité

    je prends un exemple, voici le jeu de données:

    orange martin 1
    cerise martin 1
    pomme martin 1
    orange martin 2

    pomme pierre 1
    cerise pierre 1
    cerise pierre 2
    pomme pierre 2

    j'espère que vous pourriez m'aider !!

  2. #2
    Membre éclairé
    Femme Profil pro
    Analyste en Intelligence d'Affaires (BI)
    Inscrit en
    Avril 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste en Intelligence d'Affaires (BI)
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 245
    Par défaut
    Bonjour,

    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
     
     
    DATA test;
    INPUT 
    Fruit $
    Nom   $;
    DATALINES;
     
    orange martin 
    cerise martin  
    pomme martin 
    orange martin 
    pomme pierre 
    cerise pierre 
    cerise pierre 
    pomme pierre 
     
    ;
    RUN;
     
    Proc SQL;
    SELECT DISTINCT FRUIT , NOM , COUNT (*) AS DOUBLON
    FROM TEST
    GROUP BY FRUIT , NOM ;
    QUIT;

  3. #3
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Citation Envoyé par arthur_ Voir le message
    bonjour,

    j'essais de trouver un count particulier.
    Je connais la structure retain.. by... if first.. mais je ne pense pas bien m'en servir.
    Pour faire simple, tu crées une variable intérmidiaire qui est le résultat de la concatination de tes deux variables et appliquer par la suite l'analyse par Groupe (FIRST).
    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
     
    DATA test;
    INPUT 
    Fruit $
    Nom   $;
    var_tmp=cats(fruit,nom);
    DATALINES;
    orange martin 
    cerise martin  
    pomme martin 
    orange martin 
    pomme pierre 
    cerise pierre 
    cerise pierre 
    pomme pierre 
    ;
    RUN;
     
    proc sort; by var_tmp;
    run;
     
    data test1 (drop=var_tmp);
    set test;
    by var_tmp;
    retain cnt;
    if first.var_tmp then cnt=1;
    else cnt+1;
    run;
    Jamais de DISTINCT dans un GROUP BY.
    Citation Envoyé par MDsas Voir le message
    Proc SQL;
    SELECT DISTINCT FRUIT , NOM , COUNT (*) AS DOUBLON
    FROM TEST
    GROUP BY FRUIT , NOM ;
    QUIT;
    [/code]
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut
    Merci S A M !

    c'est exactement ce que j'attendais.

  5. #5
    Membre éclairé
    Femme Profil pro
    Analyste en Intelligence d'Affaires (BI)
    Inscrit en
    Avril 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste en Intelligence d'Affaires (BI)
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 245
    Par défaut
    Jamais de DISTINCT dans un GROUP BY.
    Pourquoi on met JAMAIS de distinct?

    Effectivement dans ce cas-ci avec le DISTINCT je ne garde qu'une des lignes en doublon (ca répond pas tout à fait au besoin à un DISTINCT près).
    C'est le JAMAIS que je ne comprend pas.

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Je mettrais un bémol quand même.

    Je trouve le "jamais" un peu fort.

    Le DISTINCT peut être utilisé sans fonctions d'agrégats. Il permet de distinguer chaque ligne d'une table par rapport aux colonnes sélectionnées.

    Le GROUP BY en revanche (crée) un DISTINCT implicite mais prends tout son sens lors de regroupement et d'utilisation de fonctions d'agrégats.
    Et j'ai déjà pu trouver des requêtes possédant les 2 termes, dans le cas d'un besoin d'utilisation de clause HAVING.

    Mais effectivement dans la plupart des cas il est inutile de jumeler les 2.

    En revanche, il est possible de retrouver des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUM(DISTINCT<expression>)
    et autres fonctions du même type que AVG(), voir dans le cas d'UNION ou autre.

    Vous devriez trouver votre bonheur en cherchant un peu sur le fofo notament du côté de SQLpro il me semble.
    De plus de souvenirs, cette question a déjà été évoquée sur le Forum...

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  7. #7
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Hello,
    Peux tu nous donner un exemple de distinct couplé à un group by+ having ?
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  8. #8
    Membre éclairé
    Femme Profil pro
    Analyste en Intelligence d'Affaires (BI)
    Inscrit en
    Avril 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste en Intelligence d'Affaires (BI)
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 245

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 29/05/2015, 12h19
  2. groupe au sein d'un groupe
    Par christian.bleau dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 09/03/2014, 12h27
  3. Tri au sein d'un groupe
    Par LuckyLuke56 dans le forum FastReport
    Réponses: 5
    Dernier message: 13/10/2009, 08h25
  4. [Win 2000] Ajouter un compte du domaine dans le groupe Admin
    Par drinkmilk dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 14/03/2006, 12h03

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