Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/08/2011, 15h04   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 17
Points : 10
Points : 10
Par défaut Calcul de sous total

Bonjour,
J'ai ma table avec deux colonnes et je souhaite calculer pour chaque auteur le nombre de fois il a été cité pour un livre donné et mettre le sous total pour chaque auteur.
Voici l'exemple
Auteur nom_livre
nico le roi
nico le roi
nico le sas
jim le roi
jim conte
jim conte
jim conte

En sorti je veux avoir
Auteur nom_livre nbre_citation
nico le roi 2
nico le sas 1
sous total 3
jim le roi 1
jim conte 3
Sous total 4

Merci d'avance
boudake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 15h16   #2
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Bonjour, une solution en sql:

Code :
1
2
3
4
5
6
7
proc sql;
CREATE TABLE total AS
SELECT DISTINCT Auteur, nom_livre, count(*) AS CNT
FROM TABLE
GROUP BY  Auteur, nom_livre
;
quit;
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 16h09   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Pour les sous-totaux, il y a 2 solutions.
Soit la proc REPORT
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DATA work.test ;
  INFILE DATALINES DLM="," ;
  INPUT auteur :$10. titre :$20. ;
DATALINES ;
nico,le roi
nico,le roi
nico,le sas
jim,le roi
jim,conte
jim,conte
jim,conte
;
RUN ;
PROC REPORT DATA=work.test NOWD ;
  COLUMNS auteur titre N ;
  DEFINE auteur / GROUP ;
  DEFINE titre / GROUP ;
  BREAK AFTER auteur / SUMMARIZE ;
RUN ;
avec son inimitable BREAK AFTER SUMMARIZE.
Et du SQL comme le propose Manoutz, mais un peu rallongé pour avoir justement plusieurs niveaux d'agrégation.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
proc sql;
CREATE TABLE total AS
SELECT Auteur, titre, count(*) AS CNT
FROM work.test
GROUP BY  Auteur, titre
UNION CORR ALL
SELECT Auteur, "sous total" AS titre,
	count(*) AS CNT
FROM work.test
GROUP BY  Auteur
ORDER BY auteur, titre
;
quit;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h55.


 
 
 
 
Partenaires

Hébergement Web