mysql 10分钟一聚合_SQL-根据DateTime查询多个聚合-MySQL

这是一个复杂的过程.但是我有一个表,其中包含一个DATETIME字段,以及一些其他的int和float字段,需要对其求和并求平均值.我们希望基于时间戳在此表上进行求和和平均,最终旨在开发3个在某种意义上可以相互补充的查询.

所以能力看起来像这样

TIMESTAMP |subj_diff| SCR2 | SCR3

2011-09-20 09:01:37 | 1 | 0.02 | 1.6

2011-09-20 09:04:18 | 3 | 0.09 | 1.8

2011-09-20 14:24:55 | 5 | 0.21 | 1.2

2011-09-21 18:50:47 | 8 | 0.08 | 0.9

2011-09-21 18:54:21 | 9 | 0.12 | 2.1

我们要生成的三个查询是:

1.对以前的数据(包括当前选择的记录)中的所有前面的项进行汇总.还应该有一个总计列的另一列.例如,如果我们希望返回20号和21号之间的结果,则返回的表应如下所示:

TIMESTAMP |subj_diff| SCR2 | SCR3 | COUNT

2011-09-20 09:01:37 | 1 | 0.02 | ... | 1

2011-09-20 09:04:18 | 4 | 0.11 | | 2

2011-09-20 14:24:55 | 9 | 0.32 | | 3

2011-09-21 18:50:47 | 17 | ...

2011-09-21 18:54:21 | 26 |

2.以5分钟的时间间隔汇总结果-与上述类似,但是查询将返回3行作为第1行和第2行. 2和第4& 5行将以与上述相同的方式相加.在此查询中,如果每隔5分钟没有返回0,则返回0,计数为0.

TIMESTAMP |subj_diff| SCR2 | SCR3 | COUNT

2011-09-20 09:05:00 | 4 | 0.11 | 3.4 | 2

2011-09-20 14:25:00 | 5 | 0.21 | 1.2 | 1

2011-09-21 18:55:00 | 17 | 0.20 | 3.0 | 2

3.在一天中的每5分钟间隔(即从00:05:00到24:00:00),对第二个查询的结果集在第1个查询中执行相同的操作.

这是一个相当棘手的问题,我不知道如何开始.谁能编写SQL来解决这个问题?

这是一些使用游标和存储的proc的基本代码,但实际上并没有用.

DROP PROCEDURE curdemo;

DELIMITER $$

CREATE PROCEDURE curdemo()

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE a datetime;

DECLARE b,c FLOAT;

DECLARE cur1 CURSOR FOR

SELECT msgDate, subj_diff FROM classifier_results

WHERE DATE(msgDate) >= DATE('2011-09-25');

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

CREATE TEMPORARY TABLE IF NOT EXISTS temp_scores (d datetime, acc float);

OPEN cur1;

read_loop: LOOP

FETCH cur1 INTO a, b;

IF done THEN

LEAVE read_loop;

END IF;

INSERT temp_scores(d,acc)

SELECT a, SUM(subj_diff) FROM classifier_results

WHERE DATE(msgDate) >= DATE('2011-09-25')

AND msgDate <= a;

END LOOP;

CLOSE cur1;

SELECT * FROM temp_scores;

END;

干杯!

解决方法:

试试这个代码-

创建并填充表:

CREATE TABLE classifier_results(

`TIMESTAMP` DATETIME NOT NULL,

subj_diff INT(11) DEFAULT NULL,

scr2 FLOAT(10, 5) DEFAULT NULL,

scr3 FLOAT(10, 5) DEFAULT NULL

);

INSERT INTO classifier_results VALUES

('2011-09-20 09:01:37', 1, 0.02000, 1.60000),

('2011-09-20 09:04:18', 3, 0.09000, 1.80000),

('2011-09-20 14:24:55', 5, 0.21000, 1.20000),

('2011-09-21 18:50:47', 8, 0.08000, 0.90000),

('2011-09-21 18:54:21', 9, 0.12000, 2.10000);

并执行以下查询:

-- 1 query

SET @subj_diff = 0;

SET @scr2 = 0;

SET @scr3 = 0;

SET @cnt = 0;

SELECT timestamp,

@subj_diff:=IF(@subj_diff IS NULL, subj_diff, @subj_diff + subj_diff) subj_diff,

@scr2:=IF(@scr2 IS NULL, scr2, @scr2 + scr2) scr2,

@scr3:=IF(@scr3 IS NULL, scr3, @scr3 + scr3) scr3,

@cnt:=@cnt+1 count

FROM classifier_results;

+---------------------+-----------+---------+---------+-------+

| timestamp | subj_diff | scr2 | scr3 | count |

+---------------------+-----------+---------+---------+-------+

| 2011-09-20 09:01:37 | 1 | 0.02000 | 1.60000 | 1 |

| 2011-09-20 09:04:18 | 4 | 0.11000 | 3.40000 | 2 |

| 2011-09-20 14:24:55 | 9 | 0.32000 | 4.60000 | 3 |

| 2011-09-21 18:50:47 | 17 | 0.40000 | 5.50000 | 4 |

| 2011-09-21 18:54:21 | 26 | 0.52000 | 7.60000 | 5 |

+---------------------+-----------+---------+---------+-------+

-- 2 query

SELECT

DATE(timestamp) + INTERVAL 5 * (12 * HOUR(timestamp) + FLOOR(MINUTE(timestamp) / 5)) MINUTE new_timestamp,

SUM(subj_diff) subj_diff,

SUM(scr2) scr2,

SUM(scr3) scr3,

COUNT(*) count

FROM classifier_results

GROUP BY new_timestamp;

+---------------------+-----------+---------+---------+-------+

| new_timestamp | subj_diff | scr2 | scr3 | count |

+---------------------+-----------+---------+---------+-------+

| 2011-09-20 09:00:00 | 4 | 0.11000 | 3.40000 | 2 |

| 2011-09-20 14:20:00 | 5 | 0.21000 | 1.20000 | 1 |

| 2011-09-21 18:50:00 | 17 | 0.20000 | 3.00000 | 2 |

+---------------------+-----------+---------+---------+-------+

-- 3 query

SET @subj_diff = 0;

SET @scr2 = 0;

SET @scr3 = 0;

SET @cnt = 0;

SELECT new_timestamp timestamp,

@subj_diff:=IF(@subj_diff IS NULL, subj_diff, @subj_diff + subj_diff) subj_diff,

@scr2:=IF(@scr2 IS NULL, scr2, @scr2 + scr2) scr2,

@scr3:=IF(@scr3 IS NULL, scr3, @scr3 + scr3) scr3,

@cnt:=@cnt+1 count

FROM (

SELECT

DATE(timestamp) + INTERVAL 5 * (12 * HOUR(timestamp) + FLOOR(MINUTE(timestamp) / 5)) MINUTE new_timestamp,

SUM(subj_diff) subj_diff,

SUM(scr2) scr2,

SUM(scr3) scr3,

COUNT(*) count

FROM classifier_results

GROUP BY new_timestamp

) t;

+---------------------+-----------+---------+---------+-------+

| timestamp | subj_diff | scr2 | scr3 | count |

+---------------------+-----------+---------+---------+-------+

| 2011-09-20 09:00:00 | 4 | 0.11000 | 3.40000 | 1 |

| 2011-09-20 14:20:00 | 9 | 0.32000 | 4.60000 | 2 |

| 2011-09-21 18:50:00 | 26 | 0.52000 | 7.60000 | 3 |

+---------------------+-----------+---------+---------+-------+

祝好运!

标签:aggregation,sql,mysql

来源: https://codeday.me/bug/20191207/2087353.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍

双 11 刚过&#xff0c;双 12又来了每年这个时候作为一名设计师&#xff0c;真的很难...老板压着做电商 banner还有很多人指指戳戳让你改稿好不容易按照别人的想法过稿结果banner 的点击率还不高其实&#xff0c;只需要稍微调整视觉重点你的电商banner 就会变得变得更吸引人&am…

判断文件是否存在一个API函数

一、声明&#xff08;方式有两种&#xff09;: 1. functionPathFileExists(pszPath:string):Bool;stdcall;externalshlwapi.dllNamePathFileExistsA;2. functionPathFileExistsA(pszPath:string):Bool;stdcall;externalshlwapi.dll;二、使用&#xff08;此处用第二种方式&#…

穿背心的老院士,86岁,重病,还在敲代码,单手!

昨天有幸看到了一个视频&#xff0c;视频中&#xff0c;一位老先生穿着朴素的白背心&#xff0c;伏在桌上&#xff0c;对着电脑&#xff0c;一手按着写满密密麻麻数学公式的本子&#xff0c;另一只手仅用单指吃力又缓慢地按着键盘。老先生全神贯注地研究他是 “背心院士” 高伯…

百度广告点击软件_结束了,百度 “毒瘤” 广告!

“ 通过本文&#xff0c;你可以获取一款上网必备的插件&#xff0c;让你摆脱各种"毒瘤"广告。”大家天天逛网页&#xff0c;最恼人的也就是广告了吧。尤其是百度搜索时。01—毒瘤广告有多愁&#xff1f;百度广告有多可怕&#xff0c;小哥哥给你演示一下。百度搜“智齿…

java跳转画面后画面白了_如何跳转指定页面后再次跳转到另一页面或原来的页面...

c#图解教程第5版数万读者认可的新99.33元(需用券)去购买 >这里可以采用redirect以get形式向指定页面发出get请求&#xff0c;指定页面完成后会再次跳转到redirect后边指定的页面(注意&#xff1a;这里的redirect只是一个自定义参数&#xff0c;并不是自带的&#xff0c;名称…

用PHP实现POP3邮件的收取(一)

POP协议简介 本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理&#xff1b;针对收取和MIME解码&#xff0c;提供了两个实用的PHP类&#xff0c;并提供了运用的样例。分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取&#xff0c;解码部分会在以后的文章…

【基础数学知识】带你理解泰勒展开式本质

推荐阅读时间&#xff1a;5min~8min主要内容&#xff1a;更好的理解&#xff0c;并且记忆泰勒展开式我们学习泰勒展开&#xff0c;本质上就是为了在某个点附近&#xff0c;用多项式函数取近似其他函数。可能有些童鞋就要问了&#xff0c;既然有一个函数了&#xff0c;为什么还需…

C#使用NPOI进行word的读写

目录一、简介1、操作Word的类库&#xff1a;二、简单使用1、XWPFDocument类的实例化2、设置页面的大小3、段落处理4、表格处理5、页眉页脚处理三、综合示例四、参考一、简介1、操作Word的类库&#xff1a;二、简单使用1、XWPFDocument类的实例化该类的实例对应一个word文档XWPF…

weblogic修改控制台ip_「Weblogic学习」Weblogic知识要点之JNDI/JTA编程开发

给它一个名字&#xff0c;它就能提供你要的服务&#xff0c;JNDI就是这么地任性。想任性的霸占数据&#xff1f;JTA为你把风。这期&#xff0c;谈谈JNDI和JTA的简单介绍&#xff0c;一起看看吧……JNDI编程JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的…

java不适合开发cv吗_JavaCV开发环境的配置

一.安装opencv2.4.4、测试运行OpenCV-2.4.4.exe&#xff0c;就是解压&#xff0c;把它解压到一个你喜欢的地方 ——1.1 路径最好不要太深&#xff0c;点啊点的最讨厌了2. 添加 ***\OpenCV2.4.4\build\x64\vc11\bin; 到环境变量的PATH后面 ——2.1 ***是你放OpenCV2.4.4的地方…

NA-NP-IE系列实验5:配置文件的备份和IOS 的备份

实验5:配置文件的备份和IOS 的备份<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. 实验目的通过本实验&#xff0c;读者可以掌握如下技能&#xff1a;&#xff08;1&#xff09; 熟悉TFTP 服务器的使用&#xff08;2&#xf…

浅析 Sunday 算法

背景Sunday 算法是 Daniel M.Sunday 于 1990 年提出的字符串模式匹配。其效率在匹配随机的字符串时比其他匹配算法还要更快。Sunday 算法的实现可比 KMP&#xff0c;BM 的实现容易太多。算法过程假定主串为 "HERE IS A SIMPLE EXAMPLE"&#xff0c;模式串为 "EX…

.NET 6 Preview 1发布!

喜欢就关注我们吧&#xff01;.NET 6 首个预览版已发布&#xff0c;官方表示 .NET 6 的核心目标是完成从 .NET 5 开始的 .NET 统一计划的最后部分。此版本还将对 .NET 整体进行重大改进&#xff0c;包括针对云、桌面和移动应用程序的改进。.NET 6 计划于2021年11月正式发布&…

vba cad 获取宏的路径_VBA批量创建文件目录及链接,建议收藏备用

小伙伴们&#xff0c;之前有跟大家分享过Power Query获取文件夹内文件清单及其属性的方法【Excel快速获取文件列表及文件属性】。今天教大家通过VBA代码来实现同样的功能&#xff0c;提取文件夹内的文件信息更加灵活&#xff0c;只要选择对应的文件夹即可。实现效果操作方法&am…

纯JDBC系统的开发随想

纯JDBC系统的开发随想前两天&#xff0c;两个个纯后台应用项目在没有充分论证的情况下使用了SpringiBatis实现&#xff0c;从需求到实现、测试历经两天时间&#xff0c;实际代码开发时间是8小时&#xff0c;时间比较短&#xff0c;因为有以前的代码积累。再加上对框架熟烂于心&…

机器信息MachineInfo

不管是业务功能需要还是开发诊断需要&#xff0c;经常需要用到CPU内存硬盘等信息&#xff0c;或者需要主板编号和系统编号做唯一设备标识。于是设计了机器信息类 MachineInfo &#xff0c;支持Windows、Linux、Raspberry等。Nuget包&#xff1a;NewLife.Core源码地址&#xff1…

学习 Python 编程的 19 个资源

编译&#xff1a;wzhvictor&#xff0c;英文&#xff1a;codecondo segmentfault.com/a/1190000004187319用Python编写代码一点都不难&#xff0c;事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发&#xff0c; Python是一个不错的开始&#xff0c;甚至想做游戏…

1155低功耗cpu排行_比拼浮点运算速度,超算排行榜是这样“算”出来的

本报记者 过国忠 通 讯 员 梅国英 吴 婷6月17日&#xff0c;新一期全球超算500强榜单出炉&#xff0c;入选500强的所有超算浮点运算速度都突破每秒千万亿次&#xff0c;中国超算也在前四占有两席位置。普通计算机用指令运算速度衡量计算性能&#xff0c;而超算通常用浮点运算速…

mysql 用户概念_传输概念 – db对象的用户/组/权限从mysql到postgresql

这似乎比stackoverflow更适合这里,所以这里&#xff1a;我一直在使用mysql一段时间以来,因为在大多数便宜的虚拟主机上,它是提供的数据库.但是,现在我开始认真开发Web应用程序,我一直在本地使用postgresql作为我的数据库,以便在我感到舒服时在客户端安装上正确使用它.我唯一没有…

在CSDN上的第一篇博客

大学三年在保研成功那一天算是画上了一个圆满的句号&#xff0c;但是这个句号并不代表我在大学里面学到了多少知识。相反&#xff0c;我常常为自己匮乏的专业知识而感到灰心丧气&#xff0c;甚至开始怀疑自己是否适合做IT这一行。大学期间成绩虽然不错&#xff0c;但是那仅仅只…