如图所示,现有时间数据的时间字段是精确到时分秒的,现在需要计算PM2.5的日平均值,因此在查询时需要过滤时间字段的格式,去掉时分秒部分,只提取年月日部分。
查找资料,发现一般用CONVERT()函数实现该功能,但是在ACCESS中提示该函数未定义,可以考虑用Format函数代替。
SELECT FORMAT(时间, "YYYY年MM月DD日") AS 逐日时间, 监测点, AVG(PM25) AS PM25日均
FROM 湖北省_201501
GROUP BY FORMAT(时间, "YYYY年MM月DD日"), 监测点;
查询结果为:
需要注意的是在使用GROUP BY函数时有一个很重要的原则:SELECT后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY后面。下面就上面的一条SQL语句作具体解释:
SELECT后面共有三个列(时间、监测点、PM25)参与了查询,其中最后一个列PM25使用了聚合函数AVG,前两个没有,因此在使用GROUP BY时就需要将前两个列都加在GROUP BY后面。例如像下面这样写会报错:
SELECT FORMAT(时间, "YYYY年MM月DD日") AS 逐日时间, 监测点, AVG(PM25) AS PM25日均
FROM 湖北省_201501
GROUP BY FORMAT(时间, "YYYY年MM月DD日");
另外,关于几个重要函数的用法参考:
Group:http://www.cnblogs.com/gaiyang/archive/2011/04/01/2002452.html
CONVERT:http://www.w3school.com.cn/sql/func_convert.asp