Maison > Questions et réponses > le corps du texte
Je suis nouveau sur MySQL et j'ai besoin de votre aide pour trouver une requête afin de pouvoir calculer la moyenne pour chaque trimestre. J'ai un tableau appelé USretail92_21 qui ressemble à ceci (de 1992 à 2021) :
Date | Ventes |
---|---|
01/01/1992 | 701.0 |
01/02/1992 | 658.0 |
01/03/1992 | 731.0 |
1992-04-01 | 816.0 |
1992-05-01 | 856.0 |
1992-06-01 | 853.0 |
1992-07-01 | 101.0 |
1992-08-01 | 558.0 |
01/09/1992 | 431.0 |
Considérez le format de date 1992-01-01 pour représenter janvier 1992. Maintenant, je lance la requête suivante pour obtenir le trimestre et le mois :
选择年份(日期)为年份,月份名称(日期)为月份,季度(日期)为季度,销售额来自 USretail92_21,其中 kind="男装店" order by 1
Cela me donne cette perspective :
année | mois | Quartier | Ventes |
---|---|---|---|
1992 | Janvier | 1 | 701.0 |
1992 | Février | 1 | 658.0 |
1992 | Mars | 1 | 731.0 |
1992 | avril | 2 | 816.0 |
1992 | Mai | 2 | 856.0 |
1992 | Juin | 2 | 853.0 |
Maintenant, ma question est de savoir comment obtenir les ventes moyennes par trimestre et obtenir le résultat comme indiqué ci-dessous :
Quartier | année | Ventes moyennes |
---|---|---|
1 | 1992 | 696 (moyenne janvier/février/mars) |
2 | 1992 | 841 |
En fin de compte, je souhaite dessiner un graphique en Python avec les ventes comme axe Y et "T1_92 à Q4_21" comme axe X
P粉7887656792024-01-30 09:01:32
Vous devez utiliser GROUP BY
pour calculer des agrégations telles que des sommes et des moyennes.
À partir de votre exemple :
WITH SalesPerMonth AS ( select year(date) as Year, monthname(date)as Month, quarter(date) as Quarter, sales from USretail92_21 where kind="Men's clothing stores" ) SELECT Quarter, Year, AVG(Sales) AS AverageSales FROM SalesPerMonth GROUP BY Quarter, Year
Ou faites tout cela en même temps :
select year(date) as Year, quarter(date) as Quarter, AVG(sales) AverageSales from USretail92_21 where kind="Men's clothing stores" group by year(date), quarter(date)