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

#26 Re : Général » Comment rendre une condition WHERE dynamique? » 02/06/2016 18:15:35

Merci pour le lien.


j'ai pu faire la fonction qui me renvoie le premier jour du mois et l'autre le premier jour de l'année avec une date comme paramètre.


CREATE  FUNCTION FirstDayOfMonth (date) RETURNS date as
$$
    SELECT (EXTRACT(YEAR FROM $1::date)||'-'||EXTRACT(MONTH FROM $1::date)||'-01')::date;
$$
LANGUAGE 'sql';

CREATE FUNCTION FirstDayOfYear(date) RETURNS date as
$$
    SELECT (EXTRACT(YEAR FROM $1::date)||'-'||'01'||'-01')::date;
$$
LANGUAGE 'sql';




Je veux obtenir le même résultat, cette fois si plutôt  avec une année comme paramètre.


Quelqu'un pour m'aider svp ????

#27 Re : Général » Comment rendre une condition WHERE dynamique? » 28/05/2016 09:54:22

En fait j'ai juste pensé que je pouvais solutionner mon problème en passant par l'écriture d'une fonction, mais je ne sait pas comment m'y prendre. c'est ce pourquoi je demande de l'aide.

Les fonctions je ne m'y connaît pas dutout.


Merci.

#28 Général » Comment rendre une condition WHERE dynamique? » 27/05/2016 19:06:29

Douk V5
Réponses : 6

slt à tous,

j'ai un soucis actuellement.

la requête ci-dessous, je l'utilise dans pour Rapport conçu sur Pentaho Reporting Designer donc l'année est mon paramètre.

En SQL j'ai ceci:

SELECT T.annee as annee, T.ca as ca
FROM

     SELECT  extract(year from ma_date) as annee, SUM (PrixVte) as ca
     From ma_table
     WHERE ma_date BETWEEN (SELECT  date_trunc('year',current_date)) and (SELECT current_date)
     GROUP BY annee
    UNION
    SELECT  extract(year from ma_date) as annee, SUM (PrixVte) as ca
    From ma_table
    WHERE ma_date BETWEEN (SELECT date_trunc('year',current_date -interval '1 year')) and (SELECT current_date -interval '1 year')
    GROUP BY annee
   
)T
GROUP BY annee
ORDER BY annee desc


Ceci fonctionne uniquement quand je sélectionne 2016 et les autres non! Et je comprend pourquoi: Les WHEREs ne sont pas dynamique!!!


Mais mon problème c'est que je veux rendre les différent WHERE de mon SQL dynamique. De telle manière qu'en sélectionnant l'année 2016 par exemple j'ai ceci:


Résultat:
----------------------------------
Annee                 ca

2016                   200000             ------------> entre '2016-05-01' au '2016-05-27'

2015                   145000              ------------> entre '2015-05-01' au '2015-05-27'


ou bien 2015


Résultat:
----------------------------------
Annee                 ca

2015                  450000                     ---------->  entre '2015-05-01' au '2014-05-27'
2014                  355000                     ---------->  entre '2014-05-01' au '2014-05-27'


Du coût j'ai pensé à écrire une fonction qui prend l'année choisie comme paramètre d'entré et me retourne le premier jour du mois en cours et la date du jour pour l'année en entré. Ainsi que la correspondance pour l'année précédente.


Donc: Entre le  2016-05-01 au 2016-05-27  pour le premier WHERE et entre le  2015-05-01 au 2015-05-27  pour le deuxième WHERE par exemple si 2016 est le paramètre.


Et faire appel à la fonction dans mes différents WHERE.


svp quelqu'un peut-il m'aider pr la fonction?? ou bien y'a t-il une autre alternative pour mon probleme??


Merci de me venir en aide!  smile  smile

#29 Re : Général » Calcul de la Variation du chiffre d'affaire entre 2 années consécutive » 17/05/2016 17:50:07

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.

#30 Re : Général » Calcul de la Variation du chiffre d'affaire entre 2 années consécutive » 16/05/2016 13:01:58

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!!!!

#32 Général » Comment définir une présentation du résultat d'une requête avec UNION » 03/05/2016 14:08:42

Douk V5
Réponses : 2

Slt à tous,


Toujours dans le cardre de mon petit projet de stage académique je dois réaliser quelque chose comme ce qui suit.

De ma petite  SGBD PostgreSQL je ne sais pas si cela est possible. Si oui comment???????


SELECT ID, ProductName, Stock
FROM T1
UNION
SELECT ID, ProductName, Stock
FROM T2


Qui me donne ceci


ID   ProductName          Stock
1     Ballon                     20
2     Chemises                45
1     Ballon                     5
2     Chemises                10


et je voudrais obtenir cette présentation


ID      ProductName         StockInt         StockOut
1        Ballon                   20                  5
2        Chemise               45                  10


SVP de l'aide !!!

#33 Général » Calcul de la Variation du chiffre d'affaire entre 2 années consécutive » 03/05/2016 13:46:56

Douk V5
Réponses : 4

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!!!!

Pied de page des forums

Propulsé par FluxBB