[RESOLU] compter mois par mois

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] compter mois par mois

Re: compter mois par mois

par moimeme30 » 24 juil. 2014, 14:23

Super yann18, c'est exactement ça.
je te remercie

Re: compter mois par mois

par yann18 » 23 juil. 2014, 23:46

avec mysql , le nombre de ventes par mois pour chaque produit pour une année x:


SELECT produit,
        COUNT(CASE WHEN MONTH(date_vente) = 1 THEN 1 ELSE NULL END  )Jan,    
         COUNT(CASE WHEN MONTH(date_vente) = 2 THEN 1 ELSE NULL END ) Fev,    
         COUNT(CASE WHEN MONTH(date_vente) = 3 THEN 1 ELSE NULL END ) Mar,
        COUNT( CASE WHEN MONTH(date_vente) = 4 THEN 1 ELSE NULL  END  ) Avril,
        COUNT( CASE WHEN MONTH(date_vente) = 5 THEN 1 ELSE NULL  END ) Mai,
        COUNT( CASE WHEN MONTH(date_vente) = 6 THEN 1 ELSE NULL  END ) Juin,
        COUNT( CASE WHEN MONTH(date_vente) = 7 THEN 1 ELSE NULL  END ) Juil,
        COUNT( CASE WHEN MONTH(date_vente) = 8 THEN 1 ELSE NULL  END ) Aout,
        COUNT( CASE WHEN MONTH(date_vente) = 9 THEN 1 ELSE NULL  END ) Sept,
        COUNT( CASE WHEN MONTH(date_vente) = 10 THEN 1 ELSE NULL  END ) Oct,
        COUNT( CASE WHEN MONTH(date_vente) = 11 THEN 1 ELSE NULL  END ) Nov,
        COUNT( CASE WHEN MONTH(date_vente) = 12 THEN 1 ELSE NULL  END )`Dec`,
        COUNT(*) AS nb_vente_annuel
FROM contacts   WHERE YEAR(date_vente)='2014' GROUP BY produit;
en fait pour chaque mois s'il y a vente on fera le cumul de toutes les ventes pour trouver le nombre de vente. en cas de mévente pour un mois la requête retournera NULL

Re: compter mois par mois

par Elie » 23 juil. 2014, 23:26

SELECT `produits`, COUNT(*) AS `nb_vente`,  DATE_FORMAT(`date_vente`, '%Y-%m') AS `mois` FROM `contacts` WHERE `vente` = 1 AND `id_societe` = 17 GROUP BY DATE_FORMAT(`date_vente`, '%Y-%m') AS `mois` ORDER BY `date_vente` ASC;
mysql_query()
$ventes = array();
while($row ...) {
 $ventes[$row['produit']][$row['mois']] = $row['nb_vente'];
}

print_r($ventes);

Re: compter mois par mois

par moimeme30 » 23 juil. 2014, 23:21

actuellement, ca me sort le nombre de ventes par mois, sans distinctions de produits.
Pour ce qui est de ta proposition de tableau multiple, alors la, je n'ai pas tout compris.
quelle serait la requete sql et ensuite j'en sort quoi en PHP?

Re: compter mois par mois

par Elie » 23 juil. 2014, 23:12

Ouais et la ca t'affiche quoi ?
Le probleme c'est que tu veux un resultat par produit et par mois ...

Je serais toi je ferais un boucle avec un tableau a plusieurs etages

$vente[$produit][$annee+date][] = $nb;

Apres tu fais fais un foreach() pour afficher ton tableau ...

Re: compter mois par mois

par moimeme30 » 23 juil. 2014, 23:07

Salut Elie,
ton code fonctionne bien, le pbm est que je dois afficher le resultat sous la forme d'un tableau (car je l'utilise par la suite pour afficher un graph)

| produit | janv | fevr | mars | avril |.....| total |
| stylo | 0 |5 | 8 | 4 |....| 50 |
| crayons | 4 |7 | 2 | 9 |....| 41 |
| papier | 2 |9 | 6 | 5 |....| 38 |

Re: compter mois par mois

par Elie » 23 juil. 2014, 22:54

...
SELECT COUNT(*) as `nb_vente`,  DATE_FORMAT(`date_vente`, '%Y-%m') as `mois`, SUM(`ttc`) AS `chiffre_mensuel` FROM `contacts` WHERE `vente` = 1 AND `id_societe` = 17 GROUP BY DATE_FORMAT(`date_vente`, '%Y-%m') ORDER BY `date_vente` ASC;

compter mois par mois

par moimeme30 » 23 juil. 2014, 22:39

Bonsoir,
je galere sur une requete.
En fait je cherche à connaitre le nombre de vente réalisé mois par mois au cours de l'année x.
J'ai bien testé quelque chose mais c'est pas encore ça.
J'ai une vente en janvier et une autre en mars, le tableau me retourne mars=2 ventes
Voici le code:
select produit,
        CASE WHEN MONTH(date_vente) = 1 THEN count(*) ELSE 0 END Jan,    
        CASE WHEN MONTH(date_vente) = 2 THEN count(*) ELSE 0 END Fev,    
        CASE WHEN MONTH(date_vente) = 3 THEN count(*) ELSE 0 END Mar,
        CASE WHEN MONTH(date_vente) = 4 THEN count(*) ELSE 0 END Avril,
        CASE WHEN MONTH(date_vente) = 5 THEN count(*) ELSE 0 END Mai,
        CASE WHEN MONTH(date_vente) = 6 THEN count(*) ELSE 0 END Juin,
        CASE WHEN MONTH(date_vente) = 7 THEN count(*) ELSE 0 END Juil,
        CASE WHEN MONTH(date_vente) = 8 THEN count(*) ELSE 0 END Aout,
        CASE WHEN MONTH(date_vente) = 9 THEN count(*) ELSE 0 END Sept,
        CASE WHEN MONTH(date_vente) = 10 THEN count(*) ELSE 0 END Oct,
        CASE WHEN MONTH(date_vente) = 11 THEN count(*) ELSE 0 END Nov,
        CASE WHEN MONTH(date_vente) = 12 THEN count(*) ELSE 0 END `Dec`, 
        COUNT(ttc) as Chiffre_Annuel 
from contacts   where vente =1 AND id_societe=17 group by produit