Mysql 获取嵌套SQL查询中一列的平均值
为了简单起见,我会尽量简化这个。我需要获取查询返回列的平均值。有道理?我将尝试详细说明。从另一个问题中借用示例结果Mysql 获取嵌套SQL查询中一列的平均值,mysql,sql,sql-server,Mysql,Sql,Sql Server,为了简单起见,我会尽量简化这个。我需要获取查询返回列的平均值。有道理?我将尝试详细说明。从另一个问题中借用示例结果 Plant_ID | Year |Quarter| MR | Range | CCAR | 2009 | 1 | 706 | Null | CCAR | 2009 | 2 | 626 | 0,08 | CCAR | 2009 | 2 | 637 | 0,11 | CCAR | 2009 | 2 | 737 | 0,1 | CCAR
Plant_ID | Year |Quarter| MR | Range
| CCAR | 2009 | 1 | 706 | Null
| CCAR | 2009 | 2 | 626 | 0,08
| CCAR | 2009 | 2 | 637 | 0,11
| CCAR | 2009 | 2 | 737 | 0,1
| CCAR | 2009 | 1 | 552 | 0,19
| CCAR | 2009 | 4 | 418 | 0,137
| CCAR | 2009 | 1 | 503 | 0,085
| CCAR | 2009 | 2 | 645 | 0,058
| CCAR | 2009 | 4 | 743 | 0,098
| CCAR | 2009 | 3 | 556 | 0,187
| CCAR | 2009 | 1 | 298 | 0,258
| CCAR | 2009 | 2 | 339 | 0,041
| CCAR | 2010 | 1 | 381 | 0,042
当我运行这样的查询时,我会得到这个结果
Select PlantID, Year, Quarter, MR, Range FROM TestTable WHERE PlantID in('CCAR')
我想要每个季度的平均MR。我想试试这样的东西
Select Quarter, AVG(MR) FROM (Select PlantID, Year, Quarter, MR, Range FROM TestTable WHERE PlantID in ('CCAR')) GROUP BY Quarter ORDER BY Quarter
问题是,我不知道将查询嵌套到何处来完成此操作。有什么帮助吗
谢谢 添加别名,例如hallo
Select Quarter, AVG(MR) FROM
(Select PlantID, Year, Quarter, MR, Range FROM TestTable WHERE PlantID in ('CCAR')) hallo
GROUP BY Quarter ORDER BY Quarter
虽然在这种情况下没有必要这样做,但以下内容就足够了
Select Quarter, AVG(MR)
FROM TestTable
WHERE PlantID in ('CCAR')
GROUP BY Quarter
ORDER BY Quarter
只需使用聚合:
select Year, Quarter, avg(MR)
from TestTable
where PlantID in ('CCAR')
group by Year, Quarter;
我想你想要一年和一个季度。如果没有,只需从“选择和分组依据”中删除“年份”。我看不出有任何理由需要内联视图。至于第二个查询,输出有什么问题?它在语法上似乎是有效的,但如果你只抓住内部查询中每个MR的平均值,就不会有什么不同了。我同意Brian的观点。根据您指定的要求,不需要嵌套。您可以直接在表上运行聚合查询。因此,您的意思是从TestTable中选择季度,AvgMR,其中PlantID按季度分组?您希望不同年份的平均值不同,还是将所有季度(比如说第一季度)分组在一起?