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 :

Nombre de clients distincts dans les 6 derniers mois


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 21
    Points
    21
    Par défaut Nombre de clients distincts dans les 6 derniers mois
    jour à tous,

    je cale sur un programme SAS, sans doute du SQL, et j'aurai besoin de vos lumières.

    J'ai une base de données de la forme suivre :

    ID | mois | nb__commandes
    A 201304 8
    A 201302 7
    A 201205 2
    A 201201 9
    B 201304 3
    B 201303 2
    B 201207 5
    B 201206 12
    .
    .
    .

    J'aimerai obtenir une table comme celle-ci, mentionnant pour un mois donné les informations SUR 6 MOIS (ex 201304 -> 201304 et 201303 et 201302 et 201301 et 201212 et 201211)

    mois | nb_ID_distincts | nb_commandes
    201304 . .
    201303 . .
    201302 . .
    201301 . .
    201212 . .
    .
    .
    .

    "nb_ID_distincts" = nombre de clients distincts ayant passé une commande dans les 6 derniers mois

    "nb_commandes" = nombres de commandes totales lors des 6 derniers mois

    Je vous remercie par avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Voici un code pour la requête demandée mais avec une proc sort et une étape data.
    On peut faire mieux avec une proc SQL !!!.
    NB : La variable mois doit être dans un ordre décroissant, si non il faut la trier avec proc sort.
    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
     
    data intiale ;
    input ID $ mois $ nb_commandes ;
    cards;
    A 201304 8
    A 201302 7
    A 201205 2
    A 201201 9
    B 201304 3
    B 201303 2
    B 201207 5
    B 201206 12
    ;
    proc sort data=intiale out=out_sort;                                            
    by  id ;                                                      
    run; 
     
     
    data finale (drop=nb_commandes  mois_x); 
    retain mois_x ;
    set out_sort; 
    by  id ;
    if  first.id then do ; 
    nb_id=0 ; 
    tot_commandes=0 ; 
    mois_x=mois ; 
           end ;
    nb_id+1 ;  
    tot_commandes+nb_commandes  ;
    if  nb_id =6    then do ; mois=mois_x ; output ; end ;
    if  nb_id => 7  then delete ;
    if  last.id     then do ; mois=mois_x ; output ; end ;
    run;
    Bon courage.

Discussions similaires

  1. Nombre d'occurences dans les six derniers mois
    Par juju44 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/05/2013, 11h19
  2. [2K8] Calculer un nombre de client distinct
    Par Infern0 dans le forum SSAS
    Réponses: 0
    Dernier message: 09/11/2010, 15h18
  3. Réponses: 0
    Dernier message: 23/03/2010, 11h45
  4. [Lazarus] Chercher le nombre de lettres distinctes dans un mot
    Par StarFlor dans le forum Lazarus
    Réponses: 11
    Dernier message: 06/02/2010, 00h17
  5. Réponses: 0
    Dernier message: 27/05/2009, 14h21

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