Php 从1000个平均值中得到50个
每秒钟我写一些关于电流和电压的数据。我在图表上实时显示数据50秒,但我想显示更长的时间,例如一到两个小时。我想在一小时内从这个数据库中平均得到50分。是可以在MySQL中实现这一点,还是应该改用PHP 这是我的SQL结构和一些数据: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`), 键“
创建表(如果不存在)`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再次感谢你