Ma tête fume de (stupide) essais d'utiliser JOIN
, WITH
et GROUP BY
pour trouver une solution pour mon scénario assez commun - je ne peux tout simplement pas enrouler ma tête autour d'elle. Permettez-moi de jeter l'exemple à vous tout de suite:SQL joint mensuel et pourcentage total mensuel
J'ai deux tables (ColorCount et colorName):
ColorCount:
ColorID Count Date
1 42 2010-09-07
1 1 2010-09-08
2 22 2010-09-14
1 20 2010-10-10
3 4 2010-10-14
ColorName:
ColorID Name
1 Purple
2 Green
3 Yellow
4 Red
Maintenant, tout ce que je veux est à se joindre à la table colorName au tableau ColorCount, additionnez tous les comptes de couleurs par mois et calculez le pourcentage de chaque compte à partir du total mensuel. Les tables sont mieux que des mots:
Output:
Month Color Count Percentage
09 Purple 43 66%
09 Green 22 33%
09 Yellow 0 0%
09 Red 0 0%
10 Purple 20 83%
10 Green 0 0%
10 Yellow 4 16%
10 Red 0 0%
(S'il vous plaît noter le nombre total de mois 09
est 65
, d'où le 66%
pour Purple
et aussi les 0
« s pour les couleurs non existantes):
I espère que quelqu'un rêve dans SQL ce qui est une tâche facile ...
Utilisation de la partition par. Agréable! –
oui, bien. Doit obtenir un bon livre sur MSSQL 2008 – AlexanderMP
Bonne discussion des techniques de fenêtrage sur SimpleTalk, à http://www.simple-talk.com/sql/learn-sql-server/working-with-window-functions-in-sql- serveur /? utm_source = simpletalk & utm_medium = email-principal & utm_content = WindowsFunction-20101101 & utm_campaign = SQL –