以下是我正在使用的表格示例:
| 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 |
答案 0 :(得分:2)
您只需要一个聚合函数和分组:
SELECT Name, AVG(RunTime) Aggregate, TestNum
FROM Table
GROUP BY Name, TestNum
简而言之,在使用group by
vs where
时,前者应在汇总数据时使用,后者应在分组数据时使用。