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 :

Simuler un count(*) SQL sans utiliser le langage SQL


Sujet :

SAS Base

  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2002
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 244
    Par défaut Simuler un count(*) SQL sans utiliser le langage SQL
    Bonjour,

    J'aimerais pouvoir simuler le count(*) SQL ... sans utiliser le SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    proc sql;
    	select count (distinct CLI_IDE)
    	from Prdmctr.Inctprhead
    	where LEG_ENT_IDE = '1000' and (ACC_ENT_IDE not in ('1454','6046'))
    		and SUP_APP_COD NE ('FR');
    quit;
    Le but est de na pas passer par une proc SQL et d'avoir comme output juste le nombre de lignes après avoir effectué ma sélection.

    Je débute en SAS et je ne trouve pas d'équivalent en SAS pour effectuer cette opération.

    Je sais qu'avec le proc content je peux connaître le nombre d'observations mais je voudrais effcteuer le "count" sans créer de nouveau dataset.

    Merci de bien vouloir m'éclairer...

  2. #2
    Membre Expert
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Par défaut
    Bonjour, une première solution consiste à déterminer toutes variables dont tu as besoin via proc sql! En ce qui concerne les alternatives, il exite par exemple la proc means et la proc univariate qui permettent une exploration descriptive des données

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2002
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 244
    Par défaut
    Heu...

    Je me suis peut-être mal fait comprendre

    En fait ce que je voudrais qui ressorte c'est un output qui m'affiche juste le nombre de records (observations) présentes après avoir effectué ma clause where. Donc je n'ai pas besoin d'avoir le détail des données.

    J'ai fait un nouvel essai. Je voudrais le nb total de records qui sont de genre féminin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc sql;
     select count(name) 
     from SasUser.Class
     where sex ='F' ;
    quit;
    Ici l'ouput m'affiche simplement le chiffre '9', ce qui correspond au nombre de record correspondant à mon critère. (Donc aucune infos sur mon record)

    Je voudrais faire la même chose en SAS avec un PRINT
    J'ai trouvé l'option n qui permet d'afficher le nombre d'observations mais il ajoute à cela les détrails de chaque record. Ces détails je n'en ai pas besoin.
    Je voudrais juste qu'il m'affiche 'N=9' c'est tout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    proc print data=class n noobs;
    	where sex ='F' ;	
    run;
    le proc MEANS va m'afficher les moyennes et tout ça non? J'aurai donc des détails superflus qui seront affichés...

    Désolé, je débute je sais pas si c'est possible...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 77
    Par défaut
    Bonjour,

    Essaie cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    data _NULL_;
    set ma_table nobs=nobs ;
    call symput ("nbobs",nobs);  
    run;
     
    %put &nbobs;
    A adapter bien sûr dans ton code, du style après la fin de ton étape data filtrant ta table de base avec ton where par exemple.

    Reviens vers nous, si cette solution n'est pas gérable dans ton cas particulier

  5. #5
    Membre Expert
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Par défaut
    Avec la proc means tu peux sélectionner ce que tu sors dans ton fichier. Et en ce qui concerne la sortie dans l'output, le fait d'avoir des informations dont tu n'as pas besoin n'est pas génant (sauf en cas de requète vraiment spécifique) tant que tu as celle dont tu as besoin. Si c'est le cas génère une sortie fichier avec uniquement ce que tu as besoin et imprime cette sortie via un proc print par exemple.

    J'attire ton attention sur le fait que si tu ne veux pas de doublons pris en compte dans ton output, il faut que tu fasses un proc sort avec l'option nodupkey avant la means.

    D'ailleurs en tout logique tu auras ta réponse concernant le nombre d'identifiants dans la log à la fin de la proc sort si tu as considéré à ce moment le filtre par genre..

    Je m'arrète pour pas trop t'embrouiller..

    Bon courage,

    Manoutz

  6. #6
    Membre Expert
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Par défaut
    Ueshiba, il me semble que ta syntaxe est fausse pour les raisons suivantes:
    1. Tu ne prends pas en compte le risque de doublons
    2. Tu ne filtre pas par genre
    3. ta macro variable est affichée dans la log et non dans l'output

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 77
    Par défaut
    Bonjour Manoutz,

    Entièrement d'accord avec toi, j'ai lu en diagonale la demande de L0007.

    Donc ma propo est totalement inadaptée pour sa demande.

    Je sors mon manuel de R et me flagelle avec

    Désolé L0007 pour cette mauvaise réponse

  8. #8
    Membre chevronné
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Par défaut
    Bonjour,
    Pourquoi ne veux-tu pas utiliser la proc sql ?


    Sans tenir compte des doublons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    data _null_;
    do until (eof) ;
    	set SASUSER.CLASS  end=eof ; 
    	WHERE sex ='M' ;
    	count+1;
    end; 
    put "----- " count; 
    run;
    L'élimination des doublons nécessitera une étape de tri.

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Par défaut
    Citation Envoyé par L0007 Voir le message
    Heu...

    Je me suis peut-être mal fait comprendre

    En fait ce que je voudrais qui ressorte c'est un output qui m'affiche juste le nombre de records (observations) présentes après avoir effectué ma clause where. Donc je n'ai pas besoin d'avoir le détail des données.

    J'ai fait un nouvel essai. Je voudrais le nb total de records qui sont de genre féminin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc sql;
     select count(name) 
     from SasUser.Class
     where sex ='F' ;
    quit;
    Ici l'ouput m'affiche simplement le chiffre '9', ce qui correspond au nombre de record correspondant à mon critère. (Donc aucune infos sur mon record)

    Je voudrais faire la même chose en SAS avec un PRINT
    J'ai trouvé l'option n qui permet d'afficher le nombre d'observations mais il ajoute à cela les détrails de chaque record. Ces détails je n'en ai pas besoin.
    Je voudrais juste qu'il m'affiche 'N=9' c'est tout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    proc print data=class n noobs;
    	where sex ='F' ;	
    run;
    le proc MEANS va m'afficher les moyennes et tout ça non? J'aurai donc des détails superflus qui seront affichés...

    Désolé, je débute je sais pas si c'est possible...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    data one;
    	set sashelp.class(where=(sex='F'));
     by sex;
     counter+1;
     if last.sex;
    run;
     
    proc print data=one noobs;
    var counter;
    run;

Discussions similaires

  1. Comment exécuter un script *.sql sans ouvrir l explorateur SQL? MERCI
    Par oualilou1985 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/03/2014, 11h05
  2. [2.x] Où placer les requêtes SQL (sans utiliser d'ORM)
    Par xhion dans le forum Symfony
    Réponses: 6
    Dernier message: 20/12/2012, 09h51
  3. [Sql] Executer un script ms-SQL sans dependance (juste la framework) ?
    Par alavoler dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/03/2009, 19h12
  4. requete SQL sur Typed DataSet, sans utiliser SQL serveur
    Par Harry_polin dans le forum Accès aux données
    Réponses: 2
    Dernier message: 06/10/2006, 19h15
  5. Utilisation du langage T-SQL sous Access
    Par snubi dans le forum Access
    Réponses: 6
    Dernier message: 21/04/2006, 11h57

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