为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2022-05-01 13:10:55
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。
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

SELECT 11 as conment FROM tableName tb
WHERE tb.dataDate
BETWEEN (
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))
UNION
SELECT 11 as conment FROM tableName tb
WHERE tb.dataDate
BETWEEN (
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))
UNION
SELECT 11 as conment FROM tableName tb
WHERE tb.dataDate
BETWEEN (
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))
UNION
SELECT 11 as conment FROM tableName tb
WHERE tb.dataDate
BETWEEN (
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))
UNION
SELECT 11 as conment FROM tableName tb
WHERE tb.dataDate
BETWEEN (
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))

 


查看完整回答
反对 回复 2022-05-04
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

不用,一条就可以了。
select 日期,avg(统计的数值) from 表名 where 日期>sysdate-to_number(sysdate-日期) - 15/(60*24) and 日期<sysdate-to_number(sysdate-日期)+ 15/(60*24) and 日期> sysdate-5
group by(turnc(日期))
oracle是这么写的,你结合一下mysql的语法稍微改一下就行
我在oracle测试ok

查看完整回答
反对 回复 2022-05-04
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信