SQL GROUP BY CLAUSE

时间:2010-10-08 00:29:20

标签: sql mysql

我有一张表,我试图从列中选择日期(时间戳),RiskCategory(文本)和Point(int)的位置进行趋势分析。我想要返回的是每个日期使用RiskCategory对点和组进行SUM。我可以通过以下方式获得最新信息:

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

但我正在努力为所有日期返回相同的内容。我正在使用MySQL。

我应该进一步详细说明,任何日期都可以有多个条目,但RiskCategory只能是管理,可用性或容量。因此,对于每个日期,我应该看到后三个点的总和。例如,

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

1 个答案:

答案 0 :(得分:2)

您需要通过子句将日期添加到您的组:

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