0

我的数据库中有一个这样的数据集,显示进程的开始时间和持续时间(以秒为单位):

+---------------------+----------+
| start_time          | duration |
+---------------------+----------+
| 2013-10-01 10:00:00 |     15.6 |
| 2013-10-01 10:00:03 |      0.8 |
| 2013-10-01 10:00:03 |      4.5 |
| 2013-10-01 10:00:14 |     22.8 |
| 2013-10-01 10:00:28 |     30.9 |
+---------------------+----------+

有了这些数据,我希望能够以每 15 秒的时间间隔在浏览器中显示一个表格,以查看在指定的时间间隔内有多少进程处于活动状态。用户将能够指定日期和时间范围,因此可以像这样使用查询:

SELECT start_time, duration FROM process_period
WHERE start_time >= "2013-10-01 10:00:00" AND start_time < "2013-10-24 11:00:00"

对此采取的最佳方法是什么?所需的输出应该是这样的:

Interval time:               Number of active processes:
2013-10-01 10:00:00                      1
2013-10-01 10:00:15                      2
2013-10-01 10:00:30                      2
2013-10-01 10:00:45                      1
4

1 回答 1

0

您必须在查询中使用两件事。要计算在特定时间启动的进程数,请使用“GROUPBY”并设置间隔使用“HAVING”。由于您使用的是“GROUPBY”,因此您的查询中无法使用“WHERE”子句。检查followinf小提琴 http://sqlfiddle.com/#!2/a82fa/4/0

编辑:或者如果您希望在特定时间间隔内进行进程计数,请执行以下操作

select count(*) as process_count from processdata where start_time between '2013-10-01 10:15:00' and '2013-10-01 10:23:00'
于 2013-10-26T18:25:59.090 回答