php – 对于每一行,计算MySQL中最后20行的平均值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 对于每一行,计算MySQL中最后20行的平均值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3677字,纯文字阅读大概需要6分钟。
内容图文
![php – 对于每一行,计算MySQL中最后20行的平均值](/upload/InfoBanner/zyjiaocheng/909/0dacaf7716774e23903be96e6131a1c2.jpg)
我需要使用PHP脚本计算我在csv文件中从谷歌财务导入的股票价格的平均值和标准差.我可以将这些csv文件导入mysql到不同的表中.我打算将每个库存存储在一个单独的表中,以使其开始时不那么复杂.
在电子表格中,计算最后n行的运行平均值相当容易.但是,一旦我导入到MySQL,我就会对如何计算从第20行开始的每行的最后20行的平均值感到震惊(显然知之甚少).
从Google财经导入时,我的表格结构如下所示:
+-------------+---------+
| id | close |
+-------------+---------+
| a1447128000 | 1353.5 |
| 1 | 1356.2 |
| 2 | 1352.65 |
| 3 | 1355.65 |
| 4 | 1354.2 |
| 5 | 1356 |
| 6 | 1351 |
| 7 | 1352.5 |
| 8 | 1350 |
| 9 | 1349.3 |
| 10 | 1343.6 |
| 11 | 1342.4 |
| 12 | 1340.7 |
| 13 | 1338.5 |
| 14 | 1340.5 |
| 15 | 1338.5 |
| 16 | 1340 |
| 17 | 1335.25 |
| 18 | 1340.5 |
| 19 | 1341 |
| 20 | 1338.95 |
| 21 | 1334 |
| 22 | 1326.5 |
| 23 | 1320.1 |
| 24 | 1318 |
+-------------+---------+
我试图实现这样的输出:
+-------------+---------+-----------+--------------------+
| id | close | average | standard deviation |
+-------------+---------+-----------+--------------------+
| a1447128000 | 1353.5 | | |
| 1 | 1356.2 | | |
| 2 | 1352.65 | | |
| 3 | 1355.65 | | |
| 4 | 1354.2 | | |
| 5 | 1356 | | |
| 6 | 1351 | | |
| 7 | 1352.5 | | |
| 8 | 1350 | | |
| 9 | 1349.3 | | |
| 10 | 1343.6 | | |
| 11 | 1342.4 | | |
| 12 | 1340.7 | | |
| 13 | 1338.5 | | |
| 14 | 1340.5 | | |
| 15 | 1338.5 | | |
| 16 | 1340 | | |
| 17 | 1335.25 | | |
| 18 | 1340.5 | | |
| 19 | 1341 | 1346.5975 | 6.885664002 |
| 20 | 1338.95 | 1345.87 | 6.886588415 |
| 21 | 1334 | 1344.76 | 6.921155973 |
| 22 | 1326.5 | 1343.4525 | 7.729917124 |
| 23 | 1320.1 | 1341.675 | 8.7418605 |
| 24 | 1318 | 1339.865 | 9.660513703 |
+-------------+---------+-----------+--------------------+
正如您所注意到的那样,对于行ID 19,平均值将是最后20行.对于行id 20,平均值将是最后20行……依此类推.
我甚至想知道php的foreach循环是否可以用于遍历每一行并获得最后20行的平均值但是当我尝试时我完全迷失了.
我无法获得任何线索(无论是MySQL还是PHP).将不胜感激任何有关如何解决此问题的建议.
解决方法:
下面的代码大致显示了你可以做什么
$averages = array();
while($row = $result->fetch_assoc())
{
$sum = 0;
$arraySize = array_push($averages,$row['close']);
if($arraySize > 20)
{
array_shift($averages)
}
foreach($averages as $value)
{
$sum += $value;
}
$average = $sum / $arraySize
}
从代码开头的空数组开始,在MySQL结果循环的每次迭代中,使用array_push,它也会在将值添加到数组后返回数组的大小.然后检查这个值,如果它大于20,你使用array_shift,它将所有内容向下移1,从而丢弃第一个值
如果你想要它不计算当数组中的值的数量小于20时,只需将foreach包装在if语句中并将其显示在if语句中
内容总结
以上是互联网集市为您收集整理的php – 对于每一行,计算MySQL中最后20行的平均值全部内容,希望文章能够帮你解决php – 对于每一行,计算MySQL中最后20行的平均值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。