gpt4 book ai didi

php - 根据两个日期时间条目计算每小时的活跃用户数

转载 作者:行者123 更新时间:2023-11-29 21:13:54 24 4
gpt4 key购买 nike

我有一个 MySQL 查询问题。

在我的网络应用程序中,我将 Shoutcast 服务器上的事件听众记录在 MySQL 数据库表中,其中包括“已创建”(表示收听时间的日期时间字段)和“已更新”(表示最新时间的日期时间字段)服务器轮询 Shoutcast 服务器(每分钟)。另外,我还检索监听 session 的持续时间(以秒为单位),以及每个 session 唯一的 uid(又名 session ID)。

我想做的是计算每小时的听众数量,例如 13:00 = 20 个听众,但我想不仅包括那些收听的听众,因此“创建”日期时间字段,还包括任何仍在收听前一小时的听众,因此“更新”日期时间字段。

我需要什么查询才能实现此目的。我一次只会生成 1 天的结果。

我了解它将如何使用类似于“COUNT(id) AS命中”和“GROUP BY”的内容,但我不确定如何考虑日期时间字段,因为“更新”日期时间字段不断更新,只要用户仍在收听。有些用户可以持续收听 3 小时以上。

编辑

数据库模式的主要部分是:id (int 20)、created (datetime)、updated (datetime)、uid (int 20)、duration (int 10)。

期望的结果类似于:

(时间/点击数)0900 => 10、1000 => 15、1100 => 5、1200 => 8、1300 => 25

等等...

这是我用来按国家/地区过滤结果的查询,它使用 group by 和 count():-

选择国家/地区,COUNT(id) AS 点击次数来自listeners_log,其中年份(创建)=年份(NOW())和月份(创建)=月份(NOW())并且持续时间> = 60

查询末尾还添加了一个过滤器,用于过滤掉长度小于 60 秒的 session 。

更详细地说,创建的字段反射(reflect)了用户何时连接/启动监听 session 。例如,他们在 2016-03-21 15:00:00 收听,这反射(reflect)在创建的字段中。但如果他们在 1 小时后仍在收听,更新字段将显示为 2016-03-21 16:00:00,但创建的字段将保持不变。

更新:

我提出了以下 SQL,但这仅计算由创建的字段指示的初始连接,并忽略用户是否从一小时到下一小时保持连接。

SELECT HOUR(已创建),COUNT(id) AS 命中来自 listeners_log WHERE DATE(已创建)= CURDATE() 按 HOUR(已创建)分组

最佳答案

因此,您只需要查询“更新”日期时间字段,因为即使有新用户到来,其条目也会使用“创建”日期时间创建,以及在“更新”日期时间下的下一次更新中创建,所以现在您担心将仅查询任何特定小时的“更新”日期时间。

SELECT COUNT(id) FROM TABLE_NAME
WHERE update_Field BETWEEN DATE(NOW() - INTERVAL 1 HOUR);

这是一个可以帮助您的示例查询,我现在没有架构来测试它。按照你的方式修改它并如果不起作用请告诉我。

关于php - 根据两个日期时间条目计算每小时的活跃用户数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com