PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 03/05/2016 13:46:56

Douk V5
Banni(e)

Calcul de la Variation du chiffre d'affaire entre 2 années consécutive

Slt  à tous,

SVP, Voilà mon problème par rapport au calcul de variation donc je signal depuis un certain temps et jusqu'ici sans reponse

la formule est la suivante: ca(2016)-ca(2015)/ca(2015)


Voila ma table "TableTest" avec les champ:  ID,d_date,ca

INSERT INTO public."TableTest" VALUES (1,'01-01-2015',150000);
INSERT INTO public."TableTest" VALUES (2,'01-02-2015',300000);
INSERT INTO public."TableTest" VALUES (3,'02-02-2015',500000);
INSERT INTO public."TableTest" VALUES (4,'05-01-2016',180000);
INSERT INTO public."TableTest" VALUES (5,'10-01-2016',220000);
INSERT INTO public."TableTest" VALUES (6,'23-03-2015',455000);
INSERT INTO public."TableTest" VALUES (7,'25-03-2015',390000);
INSERT INTO public."TableTest" VALUES (8,'05-02-2016',250000);
INSERT INTO public."TableTest" VALUES (9,'07-03-2016',400000);


Ma requête de selection

SELECT T.nummois,T.mois,T.annee,ca,
       (((FIRST_VALUE(T.ca) OVER (PARTITION BY T.nummois)-LAST_VALUE(T.ca) OVER (PARTITION BY T.nummois))/LAST_VALUE(T.ca) OVER (PARTITION BY T.nummois))* 100)as variation
FROM
     (
      SELECT to_char(d_date,'MM')as nummois, to_char(d_date, 'month') as mois, extract(year from d_date) as annee,sum(ca) as ca
      FROM public."TableTest"
      GROUP BY nummois,mois,annee
      ORDER BY nummois asc
     )T

RESULTAT

nummois    mois           annee         ca                variation

   01           january        2016         400000         166.666662693024
   01           january        2015         150000         166.666662693024
   02           february       2016         250000         -68.75
   02           february       2015         800000         -68.75
   03           march          2016         400000         -52.6627242565155
   03           march          2015         845000         -52.6627242565155


Là tout semble correct!!!

Mais quant j'insère les données du mois d'avril pour la suite par exemple et que j'exécute à nouveau la requête, mes résultats ne sont plus correct. ??????

INSERT INTO public."TableTest" VALUES (10,'14-04-2016',500000);
INSERT INTO public."TableTest" VALUES (11,'15-04-2016',470000);
INSERT INTO public."TableTest" VALUES (12,'08-04-2015',400000);


RESULTAT:

nummois    mois           annee         ca                variation

   01           january       2016         400000         166.666662693024
   01           january       2015         150000         166.666662693024
   02           february      2015         800000         220.000004768372
   02           february      2016         250000         220.000004768372
   03           march         2015         845000         111.249995231628
   03           march         2016         400000         111.249995231628
   04           april            2015         400000        -58.7628841400146
   04           april            2016         970000        -58.7628841400146




  SVP y'a t-il une autre technique pour que je puisse calculer la variation ???????

  Comment je peux faire afin de  recupérer dans mon code sql pour chaque "Mois", la valeur du "CA" pour l'année en cour (2016) et l'année précedente (2015) ????? svp!!! sad sad


Cette technique donc j'utilise semble ne pas être stable!!!!

   




NB: j'utilise PostgreSQL 9.4

Merci de me venir en aide SVP pour que je puisse avancer!!!!

Dernière modification par Douk V5 (13/05/2016 13:23:41)

Hors ligne

#2 03/05/2016 18:19:44

rjuju
Administrateur

Re : Calcul de la Variation du chiffre d'affaire entre 2 années consécutive

Bonjour,

Quelle est la requête que vous avez effectuée, et quelle était l'erreur rencontrée ?

Hors ligne

#3 16/05/2016 13:01:58

Douk V5
Banni(e)

Re : Calcul de la Variation du chiffre d'affaire entre 2 années consécutive

rjuju a écrit :

Bonjour,

Quelle est la requête que vous avez effectuée, et quelle était l'erreur rencontrée ?




Slt  rjuju,

SVP, Voilà mon problème par rapport au calcul de variation donc je signal depuis un certain temps et jusqu'ici sans reponse

la formule est la suivante: ca(2016)-ca(2015)/ca(2015)


Voila ma table "TableTest" avec les champ:  ID,d_date,ca

INSERT INTO public."TableTest" VALUES (1,'01-01-2015',150000);
INSERT INTO public."TableTest" VALUES (2,'01-02-2015',300000);
INSERT INTO public."TableTest" VALUES (3,'02-02-2015',500000);
INSERT INTO public."TableTest" VALUES (4,'05-01-2016',180000);
INSERT INTO public."TableTest" VALUES (5,'10-01-2016',220000);
INSERT INTO public."TableTest" VALUES (6,'23-03-2015',455000);
INSERT INTO public."TableTest" VALUES (7,'25-03-2015',390000);
INSERT INTO public."TableTest" VALUES (8,'05-02-2016',250000);
INSERT INTO public."TableTest" VALUES (9,'07-03-2016',400000);


Ma requête de selection

SELECT T.nummois,T.mois,T.annee,ca,
       (((FIRST_VALUE(T.ca) OVER (PARTITION BY T.nummois)-LAST_VALUE(T.ca) OVER (PARTITION BY T.nummois))/LAST_VALUE(T.ca) OVER (PARTITION BY T.nummois))* 100)as variation
FROM
     (
      SELECT to_char(d_date,'MM')as nummois, to_char(d_date, 'month') as mois, extract(year from d_date) as annee,sum(ca) as ca
      FROM public."TableTest"
      GROUP BY nummois,mois,annee
      ORDER BY nummois asc
     )T

RESULTAT

nummois    mois           annee         ca                variation

   01           january        2016         400000         166.666662693024
   01           january        2015         150000         166.666662693024
   02           february       2016         250000         -68.75
   02           february       2015         800000         -68.75
   03           march          2016         400000         -52.6627242565155
   03           march          2015         845000         -52.6627242565155


Là tout semble correct!!!

Mais quant j'insère les données du mois d'avril pour la suite par exemple et que j'exécute à nouveau la requête, mes résultats ne sont plus correct. ??????

INSERT INTO public."TableTest" VALUES (10,'14-04-2016',500000);
INSERT INTO public."TableTest" VALUES (11,'15-04-2016',470000);
INSERT INTO public."TableTest" VALUES (12,'08-04-2015',400000);


RESULTAT:

nummois    mois           annee         ca                variation

   01           january       2016         400000         166.666662693024
   01           january       2015         150000         166.666662693024
   02           february      2015         800000         220.000004768372
   02           february      2016         250000         220.000004768372
   03           march         2015         845000         111.249995231628
   03           march         2016         400000         111.249995231628
   04           april            2015         400000        -58.7628841400146
   04           april            2016         970000        -58.7628841400146




  SVP y'a t-il une autre technique pour que je puisse calculer la variation ???????

  Comment je peux faire afin de  recupérer dans mon code sql pour chaque "Mois", la valeur du "CA" pour l'année en cour (2016) et l'année précedente (2015) ????? svp!!! sad sad


Cette technique donc j'utilise semble ne pas être stable!!!!

   




NB: j'utilise PostgreSQL 9.4

Merci de me venir en aide SVP pour que je puisse avancer!!!!

Hors ligne

#4 16/05/2016 22:17:23

rjuju
Administrateur

Re : Calcul de la Variation du chiffre d'affaire entre 2 années consécutive

Je ne comprends absolument pas vos données. Pour ma part, si vous voulez de l'aide il faudrait préciser la définition de la table, le sens de chaque colonne ainsi que comment doit se calculer le CA annuel.

Hors ligne

#5 17/05/2016 17:50:07

Douk V5
Banni(e)

Re : Calcul de la Variation du chiffre d'affaire entre 2 années consécutive

Slt rjuju


Dans mon exercice le plus important pour moi c'est la manipulation des  dates, le calcul du Chiffre d'affaire(CA) et le calcul de la variation ou je suis buté.


Je somme les ventes réalisé au cours d'une  année (pour 2016 par exemple), ce qui constitue mon CA et puis celles de l'année précédente (pour 2015).
Je fais ensuiteje fait un regroupement sur les différents mois de l'année (les 12 mois).
Et puis calculer les variations sur chaque mois des 2 année.


d_date =   date d'enregistrement des ventes
ca =  en fait CA ici est la somme des montant_TTC


Jusqu'ici, en observant le résultat de ma requête, je cherche comment je peux  pour un mois donné récupérer le CA de l'année 2016 et puis celui de 2015 pour le calcul de la variation qui est basé sur la formule suivante:

CA de 2016 - CA de 2015 / CA de 2015 

j'espère que c'est plus explicite.


voilà un point qui me bloque térriblement, si quelqu'un peut m'aider. roll roll


Merci pour le temps que tu mets pour essayer de me comprendre.

Hors ligne

Pied de page des forums