Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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!
![]()
#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.
![]()
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
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!!!
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!!!!
#31 Re : Général » Comment définir une présentation du résultat d'une requête avec UNION » 03/05/2016 16:05:27
Merci beaucoup rjuju! je suis ravi. Sa fonctionne parfaitement
#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!!!
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!!!!