Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于小时的MySQL查询_Mysql - Fatal编程技术网

基于小时的MySQL查询

基于小时的MySQL查询,mysql,Mysql,我试图得到一个查询,看看有多少用户在一段时间内处于活动状态 让我们假设桌子看起来像这样 +-----------+----+ |开始日期|激活| +-----------+----+ | 2014-02-25 19:37:50 | 1 | | 2014-02-25 19:35:13 | 1 | | 2014-02-25 19:24:06 | 1 | | 2014-02-25 19:16:04 | 1 | | 2014-02-25 19:14:52 |

我试图得到一个查询,看看有多少用户在一段时间内处于活动状态

让我们假设桌子看起来像这样

+-----------+----+ |开始日期|激活| +-----------+----+ | 2014-02-25 19:37:50 | 1 | | 2014-02-25 19:35:13 | 1 | | 2014-02-25 19:24:06 | 1 | | 2014-02-25 19:16:04 | 1 | | 2014-02-25 19:14:52 | 1 | | 2014-02-25 19:10:31 | 1 | | 2014-02-25 19:08:29 | 1 | | 2014-02-25 19:08:16 | 1 | | 2014-02-25 19:09:28 | 1 | | 2014-02-25 19:06:04 | 1 | | 2014-02-25 19:17:46 | 1 | | 2014-02-25 19:06:35 | 0 | | 2014-02-25 19:06:45 | 1 | | 2014-02-25 19:00:35 | 1 | | 2014-02-25 19:02:59 | 1 | | 2014-02-25 18:59:12 | 1 | | 2014-02-25 18:56:57 | 1 | | 2014-02-25 19:00:44 | 1 | | 2014-02-25 19:07:39 | 1 | | 2014-02-25 18:54:55 | 1 | +-----------+----+

我想知道每天每小时上网的人数

我之前的查询看起来像这样

选择开始日期作为日期,从开始日期>按小时分组的“2014-02-25 00:00:00”会话中选择countactive作为活动;

然而,如果这有意义的话,这似乎只会返回当他们各自的开始日期在开始日期所查看的小时数内处于活动状态的用户的数量,而不是所有在该小时内处于活动状态的用户,不管他们的开始日期是什么时候


有什么建议吗?

假设你也有一个结束日期,你在找类似的东西吗

SELECT hour_date, 
SUM((hour(start_date)<=hour_date) and (hour(end_date)>=hour_date)) as active 
FROM sessions, 
(SELECT distinct hour(start_date) as hour_date FROM sessions
WHERE start_date>'2014-02-25 00:00:00') hours
WHERE start_date>'2014-02-25 00:00:00'
GROUP BY hour_date;

更好的方法是从一个单独的表中获取小时值-请参见

谢谢,尝试过,但出现错误mysql>选择hourstart_date作为小时日期,SUMhourstart_date=hour_date作为活动会话,其中start_date>'2014-02-25 00:00:00'按小时日期分组;错误1054 42S22:“字段列表”中的未知列“小时日期”啊是的,在组中使用别名将不起作用。更改了回答谢谢,但是仍然存在相同的错误mysql>选择hourstart_date作为hour_date,SUMhourstart_date=hour_date作为活动会话,其中start_date>'2014-02-25 00:00:00'按hourstart_date分组;错误1054 42S22:“字段列表”中的未知列“小时日期”是的,很抱歉,晚上感觉很慢。检查了上面的变体,似乎有效:关于小时数,单独生成它们更快更好当然: