2010-10-08 4 views
0

J'ai une table où j'essaie de tirer une analyse de tendance à partir de laquelle les colonnes sont Date (timestamp), RiskCategory (texte) et Point (int). Ce que j'essaye de retourner est pour chaque date SUM les points et le groupe par RiskCategory. Je peux obtenir le dernier via le suivant:SQL GROUP BY CLAUSE

SELECT Date,RiskCategory,SUM(Point) AS Total 
FROM risktrend WHERE DATE(Date) >= (SELECT MAX(DATE(Date)) FROM risktrend) 
GROUP BY RiskCategory; 

mais je suis aux prises avec le retour le même pour TOUTES les dates. Suis MySQL.

Je devrais préciser que n'importe quelle date peut avoir plusieurs entrées, mais la catégorie de risque ne peut être qu'administratif, disponibilité ou capacité. Donc, pour chaque date, je devrais voir une somme de points pour les trois derniers. Par exemple,

2010-10-06 Capacity 508 
2010-10-06 Administrative 113 
2010-10-06 Availability 243 
2010-10-07 Capacity 493 
2010-10-07 Administrative 257 
2010-10-07 Availability 324 

Répondre

2

Vous devez ajouter la date à votre groupe par clause:

SELECT Date, 
     RiskCategory, 
     SUM(Point) AS Total 
FROM risktrend 
WHERE DATE(Date) >= (SELECT MAX(DATE(Date)) FROM risktrend) 
GROUP BY Date, RiskCategory; 
+0

Vous me pointé dans la bonne direction. Le code SQL a fini par être le suivant: SELECT Date, RiskCategory, SUM (Point) AS Total FROM risktrend GROUP BY DATE (date), RiskCategory; – user469731