2009-06-02 8 views
34

question rapide, j'ai le tableau suivantmysql groupe sélect somme par date

+-------------+---------------------+ 
| total  | o_date    | 
+-------------+---------------------+ 
|   35 | 01-11-2009 19:32:44 | 
|  41.5 | 01-12-2009 22:33:49 | 
|  61.5 | 01-23-2009 22:08:24 | 
|   66 | 02-01-2009 22:33:57 | 
|  22.22 | 02-01-2009 22:37:34 | 
|  29.84 | 04-20-2009 15:23:49 | 
+-------------+---------------------+ 

Je voudrais ajouter le total pour chaque mois et le groupe total par mois. Ainsi, par exemple janv.> 138 fé-> 88,2 avril-> 29,84

Les indices à ce sujet. Merci

Répondre

61

Cette solution vous donnera le nom du mois comme une colonne de votre resultset, suivi par le total selon les besoins.

SELECT MONTHNAME(o_date), SUM(total) 
FROM theTable 
GROUP BY YEAR(o_date), MONTH(o_date) 
+0

Vous pouvez également ajouter l'année à la liste de sélection -> AN (o_date) –

+1

Ou, pour l'obtenir dans le format que vous avez spécifié, vous pouvez faire SELECT CONCAT (MONTHNAME (o_date), '->', SUM (total)) –

+0

Très utile! et vous pouvez ajouter des colonnes au groupe par –

5
select year(o_date), month(o_date), sum(total) 
from table 
group by year(o_date), month(o_date); 
+0

C'est en supposant que vous souhaitez mois dans différentes années regroupées séparement –

2
SELECT SUM(total) 
FROM table 
GROUP BY MONTH(o_date) 
3

Si je me souviens d'une vie MySQL passé une requête comme

SELECT LEFT(o_date, 7) month, SUM(total) FROM TABLE group BY month

utilise l'index sur le champ o_date (qui, malheureusement, je ne garantiraient pas pour YEAR() et MONTH()).

Vous devez formater le champ month bien et cela ne sera probablement pas être indexé sur tout autre système de base de données ...

0

Essayez Group BY, comme ceci:

select count(A_id) As Tid,Day(CrDate) from Ap Group By Day(CrDate) 
0

travail Oui pour moi de cette façon:

SELECT MONTHNAME(date), SUM(`in`) as SOMA, date FROM transactions GROUP BY YEAR(date), MONTH(date) 

Mais j'ai besoin seul résultat spectacle de cette année (2014) comment puis-je faire?

+1

S'il vous plaît poser une question séparée si vous rencontrez un problème avec quelque chose – Illidanek

2

Obtenez mois et année des données sages de la base de données MySQL:

SELECT MONTHNAME(o_date), YEAR(o_date), SUM(total) 
FROM the_table 
GROUP BY YEAR(date), MONTH(date)