提问人:Ashutosh7i 提问时间:5/14/2022 更新时间:5/14/2022 访问量:203
如何从数据库中获取特定数量的行(6 行)并获取这些值的平均值,然后将平均值输出为整数 [duplicate]
how to fetch specific number of rows (6 rows) from database and get average of those values , then output average to an integer [duplicate]
问:
我正在创建PHP脚本以从包含[id,value,date]的数据库中获取输入,有很多行(使用API每分钟增加一次)。 我想每次都像 1to6 一样获取 6 行,然后执行它们的平均值(val1+2+3+4+5+6/6)并将该平均值存储到变量中。 这整个过程是连续的, 均值 1to6->average->outputin 变量 然后 6to12->average->outputin 变量 像那样
我正在使用 PHP,我做到了
$var=1;
$raw = "SELECT id, value, date FROM db";
$result = $conn->query($raw);
$row_cnt = $result->num_rows;
printf("Result set has %d rows.\n", $row_cnt);
if ($result->num_rows < $var) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo nl2br("\n");
echo "price: " . $row["value"];
echo nl2br("\n");
}
$var++;
请给我解决我的问题的方法,❤php
答:
1赞
Ashutosh7i
5/14/2022
#1
我没有将数据从SQL获取到PHP脚本,而是使用此查询在SQL Server上对数据本身进行平均
SELECT AVG(table) FROM (SELECT table FROM db ORDER BY id DESC LIMIT 0, 6) items;
评论
0赞
Ashutosh7i
5/25/2022
这是我问题的正确方法,我将此命令保存为mysql服务器中的过程,并且每次输入新数据时都会执行,无论如何,它完成了我的工作,谢谢
评论
SELECT AVG(value) FROM (SELECT value FROM db LIMIT 6) t
但这只会随机获取 6 条记录......您必须应用适当的 WHERE 条件才能进行更精确的选择(对不起,必须编辑两次)$var
SELECT AVG(price) FROM (SELECT price FROM price ORDER BY no DESC LIMIT 0, 6) items;