142 votes

Grouper par mois et par année dans MySQL

Donné une table avec un horodatage sur chaque ligne, comment formateriez-vous la requête pour s'adapter à ce format d'objet json spécifique.

J'essaie d'organiser un objet json en années / mois.

json pour baser la requête :

{
  "2009":["August","July","September"],
  "2010":["January", "February", "October"]
}

Voici la question que j'ai jusqu'à présent -

SELECT
    MONTHNAME(t.summaryDateTime) as month, YEAR(t.summaryDateTime) as year
FROM
    trading_summary t 
GROUP BY MONTH(t.summaryDateTime) DESC";

La requête se décompose parce qu'elle regroupe (de façon prévisible) les différentes années.

251voto

Mitch Dempsey Points 13568
GROUP BY YEAR(t.summaryDateTime), MONTH(t.summaryDateTime);

C'est ce que tu veux.

103voto

Ferhat KOÇER Points 21
GROUP BY DATE_FORMAT(summaryDateTime,'%Y-%m')

16voto

John McDonnell Points 612

Je préfère

SELECT
    MONTHNAME(t.summaryDateTime) as month, YEAR(t.summaryDateTime) as year
FROM
    trading_summary t 
GROUP BY EXTRACT(YEAR_MONTH FROM t.summaryDateTime);

10voto

Sassi Points 371
SELECT MONTHNAME(t.summaryDateTime) as month, YEAR(t.summaryDateTime) as year
FROM trading_summary t
GROUP BY YEAR(t.summaryDateTime) DESC, MONTH(t.summaryDateTime) DESC

Devrait utiliser des DESC pour l'ANNÉE et le mois pour obtenir une commande correcte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X