Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
afguillard
Contributor III
Contributor III

Clause where et group by

Bonjour,

Je ne comprend pas pourquoi ce script me ramène une erreur :

Directory;

LOAD 

Region,

Volume,

CA_Annuel,

sum(CA_Annuel) as CA_Total

FROM

[Fichiers pour exercices.xlsx]

(ooxml, embedded labels, table is Ventes )

Where sum(CA_Annuel)<10000

Group by Region;

Pouvez-vous m'aider?

Merci

Anne-Flore

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Non,

Car tu ne peux pas utiliser une fonction d'agrégation dans un Where.

Si c'était une connexion à une base de données, tu aurais pu utiliser Having sum(CA_Annuel<10000).

Mais dans le cas d'un fichier ou d'une table interne, tu dois utiliser un LOAD antérieure, comme ci-dessous:

Directory;

LOAD * Where CA_Total<10000;

LOAD

    Region,

    sum(CA_Annuel) as CA_Total

FROM

    [Fichiers pour exercices.xlsx] (ooxml, embedded labels, table is Ventes )

Group by Region;

View solution in original post

6 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Flore,

Lorsque tu fait un "group by", tous les champs qui ne font pas partie de ton "group by" doivent être agrégé () .

Dans ton cas, un seul champ fait partie du group by ==> Region

Donc sum(CA_Annuel) est correct, mais les CA_Annuel et Volume ne sont pas agrégés, donc ==> erreur

Que veut tu faire exactement?

afguillard
Contributor III
Contributor III
Author

Bonjour Sébastien,

Je veux juste calculer le CA annuel par région et exclure celles pour lesquelles le Ca annuel est inférieur à 10000.

D'après ce que tu me dis, il faudrait plutôt le script suivant :

Directory;

LOAD

Region,

sum(CA_Annuel) as CA_Total

FROM

[Fichiers pour exercices.xlsx]

(ooxml, embedded labels, table is Ventes )

Where sum(CA_Annuel)<10000

Group by Region;

sfatoux72
Partner - Specialist
Partner - Specialist

Non,

Car tu ne peux pas utiliser une fonction d'agrégation dans un Where.

Si c'était une connexion à une base de données, tu aurais pu utiliser Having sum(CA_Annuel<10000).

Mais dans le cas d'un fichier ou d'une table interne, tu dois utiliser un LOAD antérieure, comme ci-dessous:

Directory;

LOAD * Where CA_Total<10000;

LOAD

    Region,

    sum(CA_Annuel) as CA_Total

FROM

    [Fichiers pour exercices.xlsx] (ooxml, embedded labels, table is Ventes )

Group by Region;

afguillard
Contributor III
Contributor III
Author

Merci ! Ca fonctionne très bien comme ça.

sfatoux72
Partner - Specialist
Partner - Specialist

Cool,

peux-tu mettre la question comme résolue pour aider les autres membres de la communauté.

Merci

sfatoux72
Partner - Specialist
Partner - Specialist

Tu as mis ton remerciement comme réponse correcte!

ça ne va pas beaucoup aider les membres de la communauté.