Les résultats des trois dernières semaines ça va être faisable mais le mois d'avant... comme on n'a pas la vraie date complète, ça ne pourra être qu'approximatif, une semaine pouvant être à cheval sur deux mois.
Par ailleurs ta demande :
je dois faire une requête sur la table (au dessus) me permettant de ressortir la
moyenne des résultats sur le mois d'avant et des
3 dernières semaines. Cette requête doit également être établie dans l'ordre décroissant des résultats
de la semaine dernière S-1
Ca fait non pas une mais trois requêtes !
Tu trouveras ici les fonctions de date de MySQL qui devraient te permettre d'extraire le mois (MONTH) précédent la date courante et la semaine de la date courante (WEEK). Regarde aussi du côté de PERIOD_ADD (on peut additionner une période négative pour remonter le temps).
Ce que j'évoquais comme difficulté tient au fait que pour certains mois, WEEK(dernier jour du mois précédent la date courante) = WEEK(premier jour du mois en cours).
Commençons le travail...
1. La semaine de la date courante :
SELECT WEEK(CURRENT_DATE)
2. Extraction de la semaine dans les dates de ta table :
1 2
| SELECT CAST(RIGHT(`date`, 2) AS INTEGER) AS Semaine
FROM taTable |
Au passage, ce n'est pas une bonne idée de nommer une colonne 'date' car c'est un mot du langage SQL. C'est pour ça que je l'ai entourée de `.
3. Résultats des trois dernières semaines :
1 2 3
| SELECT num_client, nom_client, resultat, CAST(RIGHT(`date`, 2) AS INTEGER) AS Semaine
FROM taTable
WHERE CAST(RIGHT(`date`, 2) AS INTEGER) BETWEEN WEEK(CURRENT_DATE) - 4 AND WEEK(CURRENT_DATE) - 1 |
Problème si on est début janvier : il faut prendre les dernières semaines de décembre... Je te laisse chercher...
4. On fait la moyenne par client :
1 2 3 4
| SELECT num_client, nom_client, AVG(resultat) AS Moyenne
FROM taTable
WHERE CAST(RIGHT(`date`, 2) AS INTEGER) BETWEEN WEEK(CURRENT_DATE) - 4 AND WEEK(CURRENT_DATE) - 1
GROUP BY num_client, nom_client |
Bon courage pour la suite.
Partager