Bonjour,
Je débute en programation SAS et je me heurte déjà à un soucis. Je cherches à determiner le nombre de d'appel reçu en parallèle sur une minute.
Pour cela je me suis créé un table Nb_Ap_Int avec les creneaux de 1 minutes sur une journée et nb_appel initialisé à 0.
Hi.........................Hs......................Nb_appel
16MAR12:00:00:00 16MAR12:00:00:59 0
16MAR12:00:01:00 16MAR12:00:01:59 0
16MAR12:00:02:00 16MAR12:00:02:59 0
16MAR12:00:03:00 16MAR12:00:03:59 0
16MAR12:00:04:00 16MAR12:00:04:59 0
16MAR12:00:05:00 16MAR12:00:05:59 0
16MAR12:00:06:00 16MAR12:00:06:59 0
(...)
la table donnant les détail des appel est APPEL_T avec entre autre une Hdebut et Hfin des appel :
Hdebut.................Hfin
16MAR12:07:39:02 16MAR12:07:42:20
16MAR12:07:38:31 16MAR12:07:38:36
16MAR12:07:38:42 16MAR12:07:38:49
16MAR12:07:30:33 16MAR12:07:37:51
16MAR12:07:37:51 16MAR12:07:37:52
16MAR12:07:37:52 16MAR12:07:37:53
16MAR12:07:37:53 16MAR12:07:38:06
16MAR12:07:38:06 16MAR12:07:38:26
(...)
Je veux remplir Nb_Ap_Int avec le nombre de traitement qui tournent pendant la minute testée. En SQL ça donne ça :
Sauf qu'il faut que je l'écrive en Etape data et je sais pas du tout comment modifier une table en lisant une autre ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 proc sql; UPDATE Nb_Ap_Int SET Nb_appel = (SELECT count(*) FROM APPEL_T WHERE APPEL_T.Hdebut < Nb_Ap_Int.Hs and APPEL_T.Hfin> Nb_Ap_Int.Hi); quit;
L'idée c'est de lire chaque ligne de APPEL_T et de mettre nb_appel = nb_appel +1 à tous les intervals pendant lequel l'appel dure.
Merci de votre aide ! Et bonne journée
Partager