获取数据以生成报告的最佳方法

我正在使用PHP的应用程序,需要根据数据库中存储的数据生成报告。数据每天都在大量增长,我需要能够在尽可能短的时间内提取不同update_at时间范围内的信息。 例如,考虑下表,

id  order_id    quantity    amount  price       created_at              updated_at
1   21          12          0.0258  0.00215     2019-10-17 01:45:17     2019-10-17 01:45:17
2   22          4           0.0026  0.00064     2019-10-17 01:45:17     2019-10-17 01:46:17
3   21          8           0.0092  0.00115     2019-10-17 01:46:31     2019-10-17 01:47:31
4   22          8           0.0336  0.00420     2019-10-17 01:46:31     2019-10-17 01:48:31
5   21          4           0.0280  0.00700     2019-10-17 01:47:47     2019-10-17 01:48:47
6   22          8           0.0160  0.00200     2019-10-17 01:47:47     2019-10-17 01:50:47
7   21          8           0.0120  0.00150     2019-10-17 01:46:31     2019-10-17 01:52:31

我需要从第一行开始以1分钟的间隔提取总数量,开始价格,结束价格,平均价格,最低价格和最高价格,以便我可以使用这种形式的东西:

[
    ['x'=>'1538778600000','y'=>[16,0.00215,0.00064,0.00140,0.00215]],['x'=>'1538778650000','y'=>[12,0.00115,0.00090,0.00115]],['x'=>'1538778700000','y'=>[20,0.00700,0.00412,0.00700]]
]

x代表时间戳记中的strtotime()

我怎样才能最好地实现这一目标? 我正在考虑预处理记录并将它们存储在不同时间范围的不同表中。 到目前为止,我的循环还没有获得准确的信息。

$time = 60;
$interval = 0;
$y = [];
$z = [];
$array = [];
foreach ($db as $key => $value) {
    if($key == 0){
        $tnow = strtotime($value['updated_at']);
    }

    if(strtotime($value['updated_at']) <= $tnow){
        $z['x'] = $value['updated_at'];
        $z['y'] = $value['quantity'];
    }
    else{
        array_push($y,$z);
        $z = [];
        $tnow = ($tnow+60);
        continue;
    }
}
array_push($y,$z);

我需要有关实现它的最佳方法的帮助,以及需要帮助的PHP代码段。

ac2234 回答:获取数据以生成报告的最佳方法

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3169894.html

大家都在问