SQL聚合函数中的参数

时间:2015-11-19 17:21:15

标签: sql-server aggregate

以下是我正在使用的表格示例:

|  Name | RunTime | TestNum | Replication |
|:-----:|:-------:|:-------:|:-----------:|
| File1 | 12      | 1       | 1           |
| File1 | 34      | 1       | 2           |
| File1 | 76      | 1       | 3           |
| File2 | 91      | 1       | 1           |
| File2 | 52      | 1       | 2           |
| File2 | 73      | 1       | 3           |
| File1 | 61      | 2       | 1           |
| File1 | 31      | 2       | 2           |
| File1 | 53      | 2       | 3           |
| File2 | 43      | 2       | 1           |
| File2 | 49      | 2       | 2           |
| File2 | 11      | 2       | 3           |

我试图确定一个查询,我可以为所有3 RunTime选择每个特定TestNum的汇总Replications。我知道SQL中的Avg函数,但我对使用where子句与group by之间的区别仍然非常脆弱。那么我怎么能写一个查询来产生这个输出呢?

|  Name | Aggregate | TestNum |
|:-----:|:---------:|:-------:|
| File1 | 40.6      | 1       |
| File2 | 72        | 1       |
| File1 | 48.3      | 2       |
| File2 | 34.3      | 2       |

1 个答案:

答案 0 :(得分:2)

您只需要一个聚合函数和分组:

SELECT Name, AVG(RunTime) Aggregate, TestNum
FROM Table
GROUP BY Name, TestNum

简而言之,在使用group by vs where时,前者应在汇总数据时使用,后者应在分组数据时使用。