Hello,
Je re-découvre ce forum et j'espère bien y amener ma contribution quand dispo.
Aujourd'hui voici ma question : quelle est la meilleure des deux requêtes ci-dessous ou tout ou à refaire ?
Objectif : avoir 2 group by sur donc 2 niveaux différents et ainsi faire un pourcentage (genre le mois de Janvier 2016 rapporte que 5% du chiffre d'affaire total de 2016 etc.
R1 : INNER JOIN SELECT
R2: SELECT (SELECT (..))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT a.col1, a.col2, a.col3, sum(a.amt), b.amt, sum(a.amt)/b.amt as PERCENTAGE FROM MyTable a INNER JOIN ( SELECT b.col1, b.col2, sum(b.amt) FROM MyTable b GROUP BY b.col1, b.col2 ) b ON a.col1 = b.col1 AND a.col2 = b.col2 GROUP BY a.col1,a.col2, a.col3, b.amt
Pour info, je suis sur db2, mais la réponse est intéressante/différente pour tout type de base je pense.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT a.col1, a.col2, a.col3, sum(a.amt), (SELECT sum(b.amt) FROM MyTable b WHERE a.col1 = b.col1 AND a.col2 = b.col2 ) as FROM MyTable a GROUP BY a.col1,a.col2, a.col3
Merci
Cdlt
Partager