1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| SELECT t3.obj_max, t3.obj_famille_technique, t3.obj_date,
CONCAT(t3.obj_famille_technique, '_', MONTH(t3.obj_date), '/', YEAR(t3.obj_date) AS obj_famille_technique_mois_annee,
t4.sum_obj_max AS par_mois_et_fam_tech,
t5.cumul_obj_max AS par_jour_et_fam_tech
FROM la_table t3
INNER JOIN
(
-- Calcul du total par mois
SELECT obj_famille_technique, YEAR(obj_date) AS annee, MONTH(obj_date) AS mois,
SUM(obj_max) AS sum_obj_max
FROM la_table
GROUP BY obj_famille_technique, YEAR(obj_date), MONTH(obj_date)
) t4
ON t4.obj_famille_technique = t3.obj_famille_technique
AND t4.annee = YEAR(t3.obj_date)
AND t4.mois = MONTH(t3.obj_date)
INNER JOIN
(
-- Calcul du cumul par jour pour chaque mois
SELECT t1.obj_famille_technique, t1.obj_date,
SUM(t2.obj_max) AS cumul_obj_max
FROM la_table t1
INNER JOIN la table t2
ON t2.obj_famille_technique = t1.obj_famille_technique
AND YEAR(t2.obj_date) = YEAR(t1.obj_date)
AND MONTH(t2.obj_date) = MONTH(t1.obj_date)
WHERE t2.obj_date <= t1.obj_date
GROUP BY t1.obj_famille_technique, t1.obj_date
) t5
ON t5.obj_famille_technique = t3.obj_famille_technique
AND t5.obj_date = t3.obj_date
ORDER BY t3.obj_famille_technique, t3.obj_date |
Partager