我是访问和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
请帮助......
答案 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
;