sql语句用于计算所选值集的平均值

时间:2014-03-07 00:56:35

标签: sql

我是访问和SQL语句的新手。我有两个表,Site_ID和SE_WaterQuality_Data。对于每个站点,在夏季的5周和冬季的5周内收集了几个水质参数。我希望能够运行一个查询,该查询将返回一个表,该表显示按Site_ID和采样周期(例如2013年夏季)分组的特定参数(例如Temp)的平均值。我很接近,但我的输出表只显示平均值,而不是网站ID或样本期间。该查询还提示用户输入特定的Site_ID,我希望它为所有站点运行查询。

目前我的SQL语句是

SELECT Avg(SE_WaterQuality_Data.[TEMP (C)]) AS [AvgOfTEMP (C)]
FROM SE_WaterQuality_Data
WHERE (((SE_WaterQuality_Data.EMS_ID)=[Site_ID].[EMS_ID]))
GROUP BY SE_WaterQuality_Data.EMS_ID, SE_WaterQuality_Data.SummaryPeriod;

我的输出是

AveOFTEMP(C)

14.7
5.2

如何将SQL语句更改为1)运行所有站点的查询,2)返回如下表所示的表:

期望输出

Site_ID*      SamplePeriod*   AveTemp
1             Sum2013         14.2
1             Win2013         5.6
5             Sum2013         18.5

请帮助......

2 个答案:

答案 0 :(得分:1)

如果要运行所有网站,请取出WHERE子句。如果要显示其他列,请将它们包含在SELECT子句中。

SELECT [EMS_ID] AS [Site_ID], 
       [SummaryPeriod] AS [Sample_Period],
       Avg(SE_WaterQuality_Data.[TEMP (C)]) AS [AvgOfTEMP (C)]
FROM SE_WaterQuality_Data
GROUP BY SE_WaterQuality_Data.EMS_ID, SE_WaterQuality_Data.SummaryPeriod;

我希望我的语法细节正确。我不使用SQL Server,我使用MySQL。但是所有SQL方言的基本思想都是一样的。

答案 1 :(得分:0)

SELECT Site.Site_Id, WQ.SummaryPeriod, Avg(WQ.TEMP) AS AveTemp
FROM SE_WaterQuality_Data WQ, Site
WHERE WQ.EMS_ID   =   Site.EMS_ID
GROUP BY 1, 2
;