如下,我该怎么一次性将这些数据都统计出来,而不是要写5条SQL语句 ?

MySQL怎么统计前5天的当前时间的前15分钟和后15分钟的数据的平均值,
比如当前时间是:2015-08-28 15:40:00,我就要统计2015-08-22 15:25:00到2015-08-22 15:55:00数据的平均值,然后是08-23数据的平均值,一直到08-27。

回首忆惘然
浏览 150回答 2
2回答

繁星淼淼

SELECT 11 as conment FROM tableName tbWHERE tb.dataDateBETWEEN (SELECT date_add(DATE_FORMAT(date_add(now(),interval -5 day),'%Y-%m-%d %T'),interval -15 minute))AND(SELECT date_add(DATE_FORMAT(date_add(now(),interval -5 day),'%Y-%m-%d %T'),interval +15 minute))UNIONSELECT 11 as conment FROM tableName tbWHERE tb.dataDateBETWEEN (SELECT date_add(DATE_FORMAT(date_add(now(),interval -4 day),'%Y-%m-%d %T'),interval -15 minute))AND(SELECT date_add(DATE_FORMAT(date_add(now(),interval -4 day),'%Y-%m-%d %T'),interval +15 minute))UNIONSELECT 11 as conment FROM tableName tbWHERE tb.dataDateBETWEEN (SELECT date_add(DATE_FORMAT(date_add(now(),interval -3 day),'%Y-%m-%d %T'),interval -15 minute))AND(SELECT date_add(DATE_FORMAT(date_add(now(),interval -3 day),'%Y-%m-%d %T'),interval +15 minute))UNIONSELECT 11 as conment FROM tableName tbWHERE tb.dataDateBETWEEN (SELECT date_add(DATE_FORMAT(date_add(now(),interval -2 day),'%Y-%m-%d %T'),interval -15 minute))AND(SELECT date_add(DATE_FORMAT(date_add(now(),interval -2 day),'%Y-%m-%d %T'),interval +15 minute))UNIONSELECT 11 as conment FROM tableName tbWHERE tb.dataDateBETWEEN (SELECT date_add(DATE_FORMAT(date_add(now(),interval -1 day),'%Y-%m-%d %T'),interval -15 minute))AND(SELECT date_add(DATE_FORMAT(date_add(now(),interval -1 day),'%Y-%m-%d %T'),interval +15 minute)) 

芜湖不芜

不用,一条就可以了。select 日期,avg(统计的数值) from 表名 where 日期>sysdate-to_number(sysdate-日期) - 15/(60*24) and 日期<sysdate-to_number(sysdate-日期)+ 15/(60*24) and 日期> sysdate-5group by(turnc(日期))oracle是这么写的,你结合一下mysql的语法稍微改一下就行我在oracle测试ok
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
MySQL