Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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
Php 从1000个平均值中得到50个_Php_Mysql_Sql - Fatal编程技术网

Php 从1000个平均值中得到50个

Php 从1000个平均值中得到50个,php,mysql,sql,Php,Mysql,Sql,每秒钟我写一些关于电流和电压的数据。我在图表上实时显示数据50秒,但我想显示更长的时间,例如一到两个小时。我想在一小时内从这个数据库中平均得到50分。是可以在MySQL中实现这一点,还是应该改用PHP 这是我的SQL结构和一些数据: 创建表(如果不存在)`Danni`( `id`int(10)无符号非空自动增量, `ustroistvo_id`int(11)不为空, `data`timestamp NOT NULL默认当前时间戳, `CurrentA`float不为空, 主键(`id`), 键“

每秒钟我写一些关于电流和电压的数据。我在图表上实时显示数据50秒,但我想显示更长的时间,例如一到两个小时。我想在一小时内从这个数据库中平均得到50分。是可以在MySQL中实现这一点,还是应该改用PHP

这是我的SQL结构和一些数据:

创建表(如果不存在)`Danni`(
`id`int(10)无符号非空自动增量,
`ustroistvo_id`int(11)不为空,
`data`timestamp NOT NULL默认当前时间戳,
`CurrentA`float不为空,
主键(`id`),
键“ustroistvo\U id”(“ustroistvo\U id”)
)ENGINE=InnoDB默认字符集=utf8自动增量=1110;
插入到'Danni'('id','ustroistvo_id','data','CurrentA`)值中
(1, 1, '2013-07-02 10:05:35', 58),
(2, 1, '2013-07-02 10:05:37', 57),
(3, 1, '2013-07-02 10:05:38', 46),
(4, 1, '2013-07-02 10:05:39', 54),
(5, 1, '2013-07-02 10:05:40', 58),
(6, 1, '2013-07-02 10:05:41', 56),
(7, 1, '2013-07-02 10:05:42', 40),
(8, 1, '2013-07-02 10:05:44', 53),
(9, 1, '2013-07-02 10:05:45', 59),
(10, 1, '2013-07-02 10:05:46', 51);

您的查询可以如下所示:

SELECT
    AVG(Value)
FROM
    table
GROUP BY
    FLOOR(UNIX_TIMESTAMP(SavedOn) / 72)
SavedOn应该是您保存值的时间


.

“我希望在一小时内从该数据库中获得50个平均分”--请澄清,您希望在过去一小时内获得随机分吗?或者您希望以72秒为增量进行平均(72秒*50=1小时)?另外,你能发布表格结构吗?我没有具体的代码,因为我不知道该怎么做,但问题是我在某个时期有10000个值,我想得到平均值,但不是一个值,而是50个值。考虑到加号,别忘了至少略读一下这只给了我一个值而不是50,当我更改SavedOn时间戳时,我给了我与更改次数完全相同的数字。用一个示例和一些解释更新了我的答案。我很难理解您的分组,这如何给出每72个间隔的记录?
UNIX\u时间戳(SavedOn)
给出了自1970-01-01以来的秒数。然后我将秒数除以72,并将使用floor的秒数四舍五入,使它们分组。假设我有
UNIX\u时间戳(SavedOn)
返回我71999、72001、72050、72070、72090等。该函数将分别返回999、1000、1000、1000、1001-因此这是三个不同的组。如果这澄清了您的问题,请告诉我。@AndriusNaruševičius谢谢您这真的很有帮助。这是我正在搜索的东西。我不能给您^arrow,因为我是新的b再次感谢你