我有一个事件表,其中包含以下字段:
event_id
event_type
event_time
给定一个持续时间D
和一个数字k
,我需要在持续时间的任何相对时间窗口中,对所有event_type
大于K
事件的事件进行计数D
。这基本上需要针对每个事件的滑动窗口。例如,我希望所有event_type在10分钟的持续时间内具有超过5个事件的活动。
我不确定如何在没有窗口功能的情况下解决此问题。
(我使用的是mysql 5.6。我在说的是一百万行以下的数据集。)
MySQL不支持窗口功能,但是您可以在SELECT
列表中使用相关子查询来精确检索一列:
SELECT
event_id,
event_type,
event_time,
(SELECT COUNT(*) FROM events EC WHERE EC.event_type = E.event_type AND EC.event_time > E.event_time) AS subsequent_event_count
FROM
events E
WHERE ...
做EXPLAIN
吧 就执行逻辑而言,这CROSS APPLY
与SQL Server中的有点相似 。
另一种方法是自我加入:
SELECT
E.event_id,
E.event_type,
E.event_time,
COUNT(EC.event_id) AS subsequent_event_count
FROM
events E
LEFT JOIN events EC
ON E.event_type = EC.event_type AND E.event_type < EC.event_type
GROUP BY
E.event_id,
E.event_type,
E.event_time
请测试两种方法的性能。
您可以进行更多的创意连接,例如
EC.event_time > E.event_time AND EC.event_time < E.event_time + INTERVAL 1 DAY
问题内容: 我正在探索Hive中的窗口功能,并且能够理解所有UDF的功能。虽然,我无法理解我们与其他功能配合使用的分区和顺序。以下是与我计划构建的查询非常相似的结构。 只是试图了解两个关键字都涉及的后台过程。 感谢帮助:) 问题答案: 分析函数为数据集中每个分区的每一行分配一个等级。 子句确定行的分布方式(如果是配置单元,则在缩减程序之间)。 确定行在分区中的排序方式。 第一阶段由分配 ,数据集中
问题内容: 运行以下代码: 结果是: 上面的代码中没有定义任何窗口框架,它看起来默认的窗口框架是 不确定我对默认窗口框架的理解是否正确 问题答案: 从Spark Gotchas 默认帧规格取决于给定窗口定义的其他方面: 如果指定了ORDER BY子句,并且该函数接受了帧规范,则该帧规范是由RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW定义的, 否
我每年都通过联接进行
本文向大家介绍ajax请求成功后新开窗口window.open()被拦截解决方法,包括了ajax请求成功后新开窗口window.open()被拦截解决方法的使用技巧和注意事项,需要的朋友参考一下 问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢? 分析: 浏览器之所以拦截
本文向大家介绍DOS命令行窗口mysql中文显示乱码问题解决方法,包括了DOS命令行窗口mysql中文显示乱码问题解决方法的使用技巧和注意事项,需要的朋友参考一下 MySQL的默认编码是Latin1,不支持中文,如何修改MySQL的默认编码呢,下面以gbk为例来说明(这里只介绍Windows环境下) 1、中止MySQL服务(打开控制面板-->管理工具-->服务)找到MySQL,右键选择停止。 2、
本文向大家介绍MySQL 的模块不能安装的解决方法,包括了MySQL 的模块不能安装的解决方法的使用技巧和注意事项,需要的朋友参考一下 我们最常用的 DBD::mysql 模块,我发现是难住很多人的地方.因为安装老是失败,下面我介绍一下解决方法,比如我使用 cpanm 安装,有时就出 /home/nue2501j/work/DBD-mysql-4.010/blib/arch/auto/DBD/my