Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
}
On m'a demander d'afficher le nombre de clients actifs dans un tableau
mois par mois.
Donc la définition d'un client actif est un client qui a commandé dans
les 12 mois.
dans un deuxième temps on m'a demander d'afficher les 10 plus gros
clients de chaque mois.
donc cela veut dire qu'en Janvier 2009 je dois afficher les 10 plus gros
client (sommes des commandes sur l'année flottante) qui ont commandés
sur les 12 mois précédents.
Et la rebelote. Avec 12 requêtes je vois, mais avec une seule...
Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
}
On m'a demander d'afficher le nombre de clients actifs dans un tableau
mois par mois.
Donc la définition d'un client actif est un client qui a commandé dans
les 12 mois.
dans un deuxième temps on m'a demander d'afficher les 10 plus gros
clients de chaque mois.
donc cela veut dire qu'en Janvier 2009 je dois afficher les 10 plus gros
client (sommes des commandes sur l'année flottante) qui ont commandés
sur les 12 mois précédents.
Et la rebelote. Avec 12 requêtes je vois, mais avec une seule...
Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
}
On m'a demander d'afficher le nombre de clients actifs dans un tableau
mois par mois.
Donc la définition d'un client actif est un client qui a commandé dans
les 12 mois.
dans un deuxième temps on m'a demander d'afficher les 10 plus gros
clients de chaque mois.
donc cela veut dire qu'en Janvier 2009 je dois afficher les 10 plus gros
client (sommes des commandes sur l'année flottante) qui ont commandés
sur les 12 mois précédents.
Et la rebelote. Avec 12 requêtes je vois, mais avec une seule...
Le Mon, 19 Oct 2009 21:56:47 +0200, WebShaker a écrit:Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
Grave erreur (sans rapport avec votre question, certes).
Les "flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment.
Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple
- repasser dans le monde des entiers avec la multiplication qui va bien.
}
On m'a demander d'afficher le nombre de clients actifs dans un tableau
mois par mois.
Donc la définition d'un client actif est un client qui a commandé dans
les 12 mois.
Quelque chose comme :
SELECT idclient,date_trunc('month',date_cmd),SUM(total_ht) AS total FROM
commandes
GROUP BY 1,2
HAVING total > 0
Le Mon, 19 Oct 2009 21:56:47 +0200, WebShaker a écrit:
Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
Grave erreur (sans rapport avec votre question, certes).
Les "flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment.
Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple
- repasser dans le monde des entiers avec la multiplication qui va bien.
}
On m'a demander d'afficher le nombre de clients actifs dans un tableau
mois par mois.
Donc la définition d'un client actif est un client qui a commandé dans
les 12 mois.
Quelque chose comme :
SELECT idclient,date_trunc('month',date_cmd),SUM(total_ht) AS total FROM
commandes
GROUP BY 1,2
HAVING total > 0
Le Mon, 19 Oct 2009 21:56:47 +0200, WebShaker a écrit:Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
Grave erreur (sans rapport avec votre question, certes).
Les "flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment.
Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple
- repasser dans le monde des entiers avec la multiplication qui va bien.
}
On m'a demander d'afficher le nombre de clients actifs dans un tableau
mois par mois.
Donc la définition d'un client actif est un client qui a commandé dans
les 12 mois.
Quelque chose comme :
SELECT idclient,date_trunc('month',date_cmd),SUM(total_ht) AS total FROM
commandes
GROUP BY 1,2
HAVING total > 0
Pour ma culture perso, est-ce-que date_trunc n'est pas une fonction
spécifique à postgresql ?
Pour ma culture perso, est-ce-que date_trunc n'est pas une fonction
spécifique à postgresql ?
Pour ma culture perso, est-ce-que date_trunc n'est pas une fonction
spécifique à postgresql ?
Le Mon, 19 Oct 2009 21:56:47 +0200, WebShaker a écrit:Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
Grave erreur (sans rapport avec votre question, certes).
Les "flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment.
Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple
- repasser dans le monde des entiers avec la multiplication qui va bien.
SELECT idclient,date_trunc('month',date_cmd),SUM(total_ht) AS total FROM
commandes
GROUP BY 1,2
HAVING total > 0
Le Mon, 19 Oct 2009 21:56:47 +0200, WebShaker a écrit:
Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
Grave erreur (sans rapport avec votre question, certes).
Les "flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment.
Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple
- repasser dans le monde des entiers avec la multiplication qui va bien.
SELECT idclient,date_trunc('month',date_cmd),SUM(total_ht) AS total FROM
commandes
GROUP BY 1,2
HAVING total > 0
Le Mon, 19 Oct 2009 21:56:47 +0200, WebShaker a écrit:Pour simplifier disons que j'ai une table commandes table commandes
{
idclient integer,
date_cmd timestamp,
total_ht float
Grave erreur (sans rapport avec votre question, certes).
Les "flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment.
Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple
- repasser dans le monde des entiers avec la multiplication qui va bien.
SELECT idclient,date_trunc('month',date_cmd),SUM(total_ht) AS total FROM
commandes
GROUP BY 1,2
HAVING total > 0
total_ht float
Grave erreur (sans rapport avec votre question, certes). Les
"flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment. Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple - repasser dans le
monde des entiers avec la multiplication qui va bien.
J'ai jamais compris pourquoi.
Certes je comprends bien le problème de l'arrondi (que d'ailleurs
j'obtiens régulièrement,
mais l'erreur se trouve toujours a une décimal
trèèèèès lointaine.
Je vais par exemple avoir un
1522536.97999999999992
ce qui évidement devrait être un
1522536.98
mais bon un simple arrondi me donne toujours le bon résultat !
non ca va me donner le CA par client et par mois.
moi ce que je voudrai, c'est trouver la requête pour récupérer un
tableau genre
month | nbclient
----------------
1 | 255
2 | 315
...
c'est a dire me renvoyant l'équivalent des 12 requetes. (une pour chaque
mois).
total_ht float
Grave erreur (sans rapport avec votre question, certes). Les
"flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment. Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple - repasser dans le
monde des entiers avec la multiplication qui va bien.
J'ai jamais compris pourquoi.
Certes je comprends bien le problème de l'arrondi (que d'ailleurs
j'obtiens régulièrement,
mais l'erreur se trouve toujours a une décimal
trèèèèès lointaine.
Je vais par exemple avoir un
1522536.97999999999992
ce qui évidement devrait être un
1522536.98
mais bon un simple arrondi me donne toujours le bon résultat !
non ca va me donner le CA par client et par mois.
moi ce que je voudrai, c'est trouver la requête pour récupérer un
tableau genre
month | nbclient
----------------
1 | 255
2 | 315
...
c'est a dire me renvoyant l'équivalent des 12 requetes. (une pour chaque
mois).
total_ht float
Grave erreur (sans rapport avec votre question, certes). Les
"flottants" introduisent des erreurs d'arrondis, donc votre
comptabilité va pleurer à un moment. Deux façons de faire :
- utiliser le bon type: numeric(6,2) par exemple - repasser dans le
monde des entiers avec la multiplication qui va bien.
J'ai jamais compris pourquoi.
Certes je comprends bien le problème de l'arrondi (que d'ailleurs
j'obtiens régulièrement,
mais l'erreur se trouve toujours a une décimal
trèèèèès lointaine.
Je vais par exemple avoir un
1522536.97999999999992
ce qui évidement devrait être un
1522536.98
mais bon un simple arrondi me donne toujours le bon résultat !
non ca va me donner le CA par client et par mois.
moi ce que je voudrai, c'est trouver la requête pour récupérer un
tableau genre
month | nbclient
----------------
1 | 255
2 | 315
...
c'est a dire me renvoyant l'équivalent des 12 requetes. (une pour chaque
mois).
Bon soit!
Ceci dit c'est un peu trop tard dans mon cas.
Heu nan.
Ca ça va me donner le nombre de client qui ont commandés en Janvier,
fevrier, ...
mois en janvier je veux ce qui ont commander les 12 mois précédents !!!
Pour ma culture, je vais essayer ce genre de trucs. je ne connaissais
pas WITH !
Bon soit!
Ceci dit c'est un peu trop tard dans mon cas.
Heu nan.
Ca ça va me donner le nombre de client qui ont commandés en Janvier,
fevrier, ...
mois en janvier je veux ce qui ont commander les 12 mois précédents !!!
Pour ma culture, je vais essayer ce genre de trucs. je ne connaissais
pas WITH !
Bon soit!
Ceci dit c'est un peu trop tard dans mon cas.
Heu nan.
Ca ça va me donner le nombre de client qui ont commandés en Janvier,
fevrier, ...
mois en janvier je veux ce qui ont commander les 12 mois précédents !!!
Pour ma culture, je vais essayer ce genre de trucs. je ne connaissais
pas WITH !
Pour ma culture perso, est-ce-que date_trunc n'est pas une fonction
spécifique à postgresql ?
Pour ma culture perso, est-ce-que date_trunc n'est pas une fonction
spécifique à postgresql ?
Pour ma culture perso, est-ce-que date_trunc n'est pas une fonction
spécifique à postgresql ?
mois en janvier je veux ce qui ont commander les 12 mois
précédents !!!
mois en janvier je veux ce qui ont commander les 12 mois
précédents !!!
mois en janvier je veux ce qui ont commander les 12 mois
précédents !!!