2015-09-05 5 views
0

Existe-t-il un moyen d'extraire les données des 6 derniers mois de la base de données et d'afficher les données séparées mensuellement? Dans mon cas, je veux récupérer les données des 6 derniers mois, les regrouper par leur mois respectif et les afficher dans un graphique à barres dans un graphique à barres. Merci d'avance !!Comment extraire les données des six derniers mois de la base de données et des données mensuelles du groupe

+0

impossible sans une définition de table et quelques exemples de données – amdixon

+0

J'ai une table 'dynamicorders' avec quelques colonnes incluant la date de commande et d'autres données associées. La requête ci-dessous me donne les données du mois dernier. Je peux également obtenir les données des six derniers mois en déclarant dynamiquement les intervalles de date. Mais comment puis-je regrouper les données en fonction de leurs mois? Par exemple je veux afficher le nombre de clients pour le mois d'août, juillet, juin ...... mars. 'SELECT nom_produit, clients, somme ('order_total') en tant que ventes FROM dynamicorders OERE order_status = 'Expédié' ET MONTH (STR_TO_DATE (date_de_ commande, '% m /% d /% Y')) = MOIS (CURDATE() - INTERVALLE 1 MOIS) ' –

+1

Il y a cette invention étonnante. Il y a quelques sites web où vous pouvez taper des phrases comme ** mysql group data par mois ** dans une zone de texte. Ces sites Web regardent le * Internet entier * et vous donnent des suggestions pour les choses à lire. Sérieusement, j'ai rejeté cette question parce qu'elle est très souvent posée et répondue sous une forme ou une autre. –

Répondre

0

Ceci est votre solution: http://sqlfiddle.com/#!9/81776/1

create table dynamicorders (
    order_date date, 
    order_total int, 
    order_status char(10) 
); 

insert into dynamicorders values('2015-07-05', 705, 'Shipped'); 
insert into dynamicorders values('2015-07-15', 715, 'Shipped'); 
insert into dynamicorders values('2015-08-02', 802, 'Shipped'); 
insert into dynamicorders values('2015-08-12', 812, 'Closed'); 
insert into dynamicorders values('2015-08-29', 829, 'Shipped'); 
insert into dynamicorders values('2015-09-03', 903, 'Shipped'); 


SELECT 
Month(order_date) as month, 
sum(order_total) as sales 
FROM dynamicorders 
WHERE 
order_status='Shipped' 
GROUP BY Month(order_date); 

(si les commandes sont de la même année, sinon vous devez prendre soin des années précédentes aussi, le mois peut être juillet 2015, 2014, etc ...

+1

Apprécié. Je pense que c'est ce que je cherchais. Merci. –

+1

Je voulais regrouper les ensembles de données des six derniers mois par rapport au mois en cours afin que l'année précédente ne soit pas un problème. –