我是访问和SQL语句的新手。我有两个表site_id和se_waterquality_data。对于每个地点,在夏季和冬季5周内收集了几个水质参数。我希望能够运行一个查询,该查询将返回一个表,该表显示由Site_ID和示例期分组的特定参数(例如TEMP)的平均值(例如2013年夏季)。我很接近,但我的输出表仅显示平均值,而不显示站点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
帮助......
如果要为所有站点运行,请取出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方言中的基本想法都是相同的。
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
;