Maison >base de données >tutoriel mysql >Comment regrouper les données SQL par mois et par année et formater la sortie en « mois-année » ?

Comment regrouper les données SQL par mois et par année et formater la sortie en « mois-année » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-28 12:35:36198parcourir

How to Group SQL Data by Month and Year and Format the Output as

Regroupement SQL par mois et année

En SQL, le regroupement des données par mois et par année est une tâche courante lors de l'analyse de données temporelles. Pour y parvenir, vous pouvez utiliser les fonctions MOIS() et ANNÉE() ainsi que la clause GROUP BY.

Énoncé du problème

Un utilisateur rencontre un problème lors d'une requête un tableau Commande pour afficher la colonne « date » sous la forme « mois-année » (par exemple, « 9-2011 »). Ils utilisent la requête suivante :

SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY MONTH(date), YEAR(date)

Cependant, cette requête n'affiche que les mois (par exemple, "9"), et l'utilisateur souhaite inclure à la fois le mois et l'année dans le résultat.

Solution

Pour résoudre ce problème, vous pouvez utiliser la fonction CAST() pour convertir les valeurs du mois et de l'année en chaînes et concaténez-les avec un trait d’union entre les deux. Voici la requête mise à jour :

SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4))

Cette requête renverra la colonne « date » dans le format souhaité, affichant à la fois le mois et l'année.

Une autre option consiste à utiliser des zéros non significatifs lors de la diffusion vers assurer un formatage cohérent. Ceci peut être réalisé en utilisant la fonction right() :

GROUP BY 
  CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2) 

Cette approche ajoutera des zéros non significatifs aux valeurs de mois à un chiffre, ce qui entraînera un formatage uniforme (par exemple, "09-2011").

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn