Rang avec sum et group by
Bonjour à tous,
J'ai un problème avec une requête. Cette requête récupère des sommes de ventes selon des périodes données, et je souhaiterais rajouter deux champs correspondants au classement des sommes pour chaque période. Voici la requête, vous y verrez plus clair :
Code:
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
| SELECT
region.`REGION_ID` AS region_REGION_ID,
region.`REGION_LIB` AS region_REGION_LIB,
sum(vente.`VENTE_CA_REEL`),
sum(case when vente.`VENTE_DATE` between '2008-11-01' and '2008-12-01' then vente.`VENTE_CA_REEL` else 0 end) as CA,
sum(case when vente.`VENTE_DATE` between '2008-10-01' and '2008-11-01' then vente.`VENTE_CA_REEL` else 0 end) as CA_Prec,
sum(vente.`VENTE_CA_OBJ`),
sum(vente.`VENTE_MB_REEL`),
sum(case when vente.`VENTE_DATE` between '2008-11-01' and '2008-12-01' then vente.`VENTE_MB_REEL` else 0 end) as MB,
sum(case when vente.`VENTE_DATE` between '2008-10-01' and '2008-11-01' then vente.`VENTE_MB_REEL` else 0 end) as MB_Prec,
sum(vente.`VENTE_MB_OBJ`),
sum(vente.`VENTE_QTE_REEL`),
sum(case when vente.`VENTE_DATE` between '2008-11-01' and '2008-12-01' then vente.`VENTE_QTE_REEL` else 0 end) as QTE,
sum(case when vente.`VENTE_DATE` between '2008-10-01' and '2008-11-01' then vente.`VENTE_QTE_REEL` else 0 end) as QTE_Prec,
sum(vente.`VENTE_QTE_OBJ`),
(sum(vente.`VENTE_CA_REEL`) - sum(vente.`VENTE_CA_OBJ`)) / sum(vente.`VENTE_CA_OBJ`) * 100,
(sum(vente.`VENTE_MB_REEL`) - sum(vente.`VENTE_MB_OBJ`)) / sum(vente.`VENTE_MB_OBJ`) * 100,
(sum(vente.`VENTE_QTE_REEL`) - sum(vente.`VENTE_QTE_OBJ`)) / sum(vente.`VENTE_QTE_OBJ`) * 100
FROM
`magasin` magasin INNER JOIN `vente` vente ON magasin.`MAGASIN_ID` = vente.`FK_MAGASIN_ID`
INNER JOIN `region` region ON magasin.`FK_REGION_ID` = region.`REGION_ID`
INNER JOIN `enseigne` enseigne ON magasin.`FK_ENSEIGNE_ID` = enseigne.`ENSEIGNE_ID`
INNER JOIN `famille` famille ON vente.`FK_FAMILLE_ID` = famille.`FAMILLE_ID`
GROUP BY
region_REGION_ID
ORDER BY CA DESC |
Est ce que cela est possible ? Si oui auriez vous des pistes (avec exemples si possible) ?
Merci d'avance pour votre aide