Roulement de Sommes dans SQL - un Exemple Pratique
Roulement de Sommes dans SQL - un Exemple Pratique
Date de publication : 05/08/2008
Utiliser des sous-requêtes dans la clause FROM pour doubler les agrégats
Utiliser des sous-requêtes dans la clause FROM pour doubler les agrégats
Les sous-requêtes dans la clause FROM sont parfois mentionnées comme des tables virtuelles ou dérivées. Elles représentent un jeu d'informations, dans son ensemble, qui peut être joint et sélectionné depuis une table normale. Pour faire une sous-requête dans la clause FROM, entourez simplement l'expression SELECT avec des parenthèses et donné un alias ou un nom pour la table dérivée.
Retournons à notre exemple, ceci est le jeu d'informations que nous voulons éventuellement joindre à notre rand de prédicat.
Commande sql |
|
Quoiqu'il en soit, comme constaté précédemment, puisque notre SELECT contient déjà un GROUP BY, nous devons utiliser une table dérivée pour générer une somme courante. Pour faire ceci, nous allons construire la commande SQL complexe par étapes.
D'abord entourons notre expression SELECT avec des parenthèse et donnons lui un alias.
D'abord entourons notre expression SELECT avec des parenthèse et donnons lui un alias.
Commande sql 4 |
|
Ensuite, en suivant la formule générale donnée dans la commande 2, nous allons créer un second jeu identique pour joindre au premier jeu.
Donc nous utilisons une autre table dérivée et nous lui donnons un alias x2 cette fois :
Commande sql 5 |
|
Ensuite nous voulons appliquer la condition de jointure, pour ce faire, bloquons une expression SELECT extérieure, et une clause FROM contant les deux tables dérivées et une condition de jointure.
En pseudo-code, quelque chose comme ceci :
En pseudo-code, quelque chose comme ceci :
Commande sql 6 |
|
En écrivant le SQL en pseudo code comme dans la commande 6, vous vous faites une meilleure idée de comment les pièces fonctionnent entre elles, sans s'enliser dans une expression SQL plus longue, plus complexe.
Les seules choses qu'il reste à faire à partir de maintenant sont :
- Inclure les champs SELECT dans le SELECT extérieure et remplacer «key» par le vrai nom de champs.
- Remplacer le pseudo-code utilisé pour la table dérivée de l'expression SELECT par le vrai code SQL
Dans l'ordre, allons y.
D'abord incluant les champs SELECT dans l'expression SELECT extérieure.
D'abord incluant les champs SELECT dans l'expression SELECT extérieure.
Commande sql 7 |
|
L'expression extérieure SELECT doit contenir le champ clé depuis x1 (MonthNo), le champ Added depuis x1 (qui contient le nombre de commentaires par mois), et la somme des jeux de valeurs de Added depuis x2, qui contient le nombre de commentaires pour tout les mois précédent et incluant le mois en cour dans x1.
De plus, j'ai aussi mis une dépendance (sur le champs onMonth), MonthName , depuis x1 dans un but décoratif.
De plus, j'ai aussi mis une dépendance (sur le champs onMonth), MonthName , depuis x1 dans un but décoratif.
L'étape finale est de remplacer la table dérivée par le code SQL actuel.
Commande sql 8 |
|
Voila , maintenant nous avons une somme courante.
Listing 9 |
|