Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
chadliagabsi
Creator II
Creator II

Deux aggr dans la même expression

Bonjour,

je veux faire la somme de cette expression par mois et par annee:

if(ANNEE= year(MIN_DAT) and MOIS= month(MIN_DAT),count(DISTINCT(MIN_DAT))),ANNEE,MOIS

mon expression me donne un résultat correct si je selectionne une personne.

je veux alors avoir le nombre des personnes qui répond à ma condition par année et par mois.

J'ai utilisé deux aggr mais ça ne fonctionne pas.

sum(aggr(aggr(if(ANNEE= year(MIN_DAT) and MOIS= month(MIN_DAT),count(DISTINCT(MIN_DAT))),ANNEE,MOIS),ANNEE,MOIS)).

Merci pour vos aides.

8 Replies
sunny_talwar

May be try this

Sum(Aggr(If(ANNEE = Year(MIN_DAT) and MOIS = Month(MIN_DAT), Count(DISTINCT MIN_DAT)), ANNEE, MOIS, personne))

chadliagabsi
Creator II
Creator II
Author

it also return people who don't meet in my condition

i need to count the number of MIN_DAT per year and per month

sunny_talwar

How about this

Sum(Aggr(If(ANNEE = Min(TOTAL <personne> ANNEE) and MOIS = Min(TOTAL <personne> MOIS), Count(DISTINCT MIN_DAT)), ANNEE, MOIS, personne))

chadliagabsi
Creator II
Creator II
Author

it has a selection problem if i dont select year it's okey but when i select year i dont have the same result.

The first table : i show all years

The second table : when i selected year= 2013.

Thanks

test.png

sfatoux72
Partner - Specialist
Partner - Specialist

1) Peux-tu expliquer la logique et le but de ton expression (je ne suis pas certain de bien comprendre):

if(ANNEE= year(MIN_DAT) and MOIS= month(MIN_DAT),count(DISTINCT(MIN_DAT)))

2) Dans ton schéma de données, quel est le lien entre ANNEE, MOIS et MIN_DAT ? Une copie d'écran serait bien venue.

3) O?u utilises-tu cette expression ? Une copie d'écran serait bien venue.

chadliagabsi
Creator II
Creator II
Author

Bonjour Sébastien,

J'ai besoin de calculer le nombre des agents entrées et sorties dans la société en prenant en considération que un agent a plusieurs dates de début et fin occupation. Donc j'ai ajouté à mon script la table min_max qui me donne la date minimale et maximale par agent quand j'ai mis mon expression dans un tableau avec dimension année et mois

et je sélectionne un agent j'aurai l'année de sa première début occupation. mais quand je désélectionne pour voir le nombre pour tout le monde j'ai aucun résultat.

J'ai essayé l'expression de Sunny  en ajoutant MIN_DATE à l'agregation :

Sum(Aggr(If(ANNEE = Min(TOTAL <personne> ANNEE) and MOIS = Min(TOTAL <personne> MOIS), Count(DISTINCT MIN_DAT)), ANNEE, MOIS, personne,MIN_date))

ca fonctionne si j'ai aucun sélection mais quand je sélectionne une année elle m'augmente les valeurs.

Merci

test.png

sfatoux72
Partner - Specialist
Partner - Specialist

J'ai un peu de peine à comprendre les champs MOIS et ANNEE dans la table centrale. Que représentent-ils ?

chadliagabsi
Creator II
Creator II
Author

J'ai utilisé des champs qui sont dans ma table centrale D_ à mon calendrier ce qui fait j'ai eu une synchronisation ce qui m'a obligé de faire join au calendrier avec  ma table D_

Calendrier:

left join( D_)

LOAD MATRICULE_AGENT,

MOTIF,

TEMPS_TRAVAIL,

Mois_temp as MOIS,

Annee_temp as ANNEE,

Premier_jour_mois as PREMIER_JOUR_MOIS,

Dernier_jour_mois as DERNIER_JOUR_MOIS,

date_deb_temp as DATE_DEB,

date_fin_temp as DATE_FIN,

if(MOTIF = 'CONGES', 0, Nombre_de_jours) as NOMBRE_JOURS_TRAVAILLES

RESIDENT CALENDRIER_MOIS_temp2;

Drop table CALENDRIER_MOIS_temp2,TRANSFERT;