选择过去 24 小时和过去 ​​30 天的最低和最高温度 [关闭]

Posted

技术标签:

【中文标题】选择过去 24 小时和过去 ​​30 天的最低和最高温度 [关闭]【英文标题】:Select MIN and MAX temperature in last 24 hours and last 30 days [closed] 【发布时间】:2021-02-11 07:58:33 【问题描述】:

我有一个用于数据记录器的 mysql 数据库。我想找到过去 24 小时和过去 ​​30 天内的最小值和最大值(温度)。我真的没有使用 Mysql 和 php 的经验。这个我试过了,还是不行。

$min_value = "
    SELECT * 
    FROM datalogger 
    ORDER BY id 
    LIMIT 24 (SELECT *
                FROM datalogger 
                WHERE temperature = ( SELECT MIN(temperature) FROM datalogger ))";

谢谢

【问题讨论】:

我们这里没有minimal reproducible example。请阅读How to Ask。 【参考方案1】:

您可以使用条件聚合。假设测量日期存储在ts 列中,您可以将其表述为:

select 
    min(case when ts > now() - interval 1 day then temperature end) min_last_24h,
    min(ts) min_last_30_day
from datalogger
where ts > now() - interval 30 day

这会生成一个由一行和两列组成的结果集,其中包含两个不同日期范围内的最低温度。

如果你想在两个不同的行中,那么一种方法是:

select x.when, min(temperature) min_temperature
from datalogger d
inner join (
    select 'last 1 day' when, 1 d
    union all select 'last 30 day', 30
) x on d.ts > now() - interval x.d day
from datalogger
group by x.when

【讨论】:

【参考方案2】:

您需要两个查询。一个用于过去一天的每小时最小值/最大值,另一个用于过去 30 天的每日最小值/最大值。

$last_day = $conn->query('SELECT MIN(temperature) AS mintemp, MAX(temperature) AS maxtemp
    FROM datalogger
    WHERE time > NOW() - INTERVAL 1 DAY');
$row = $last_day->fetch_assoc();
echo "24 hours: Lowest temp = $row['mintemp'], highest temp = $row['maxtemp']<br>";

$last_month = $conn->query('SELECT MIN(temperature) AS mintemp, MAX(temperature) AS maxtemp
    FROM datalogger
    WHERE time > NOW() - INTERVAL 30 DAY');
$row = $last_day->fetch_assoc();
echo "30 days: Lowest temp = $row['mintemp'], highest temp = $row['maxtemp']<br>";

【讨论】:

谢谢。我怎样才能对此进行查询,将值放入变量并“回显”它们?谢谢 回显任何其他查询的结果的方式相同。 我更新了答案以显示如何在表格中显示结果。 是的,它有效 :) 但我认为我没有写清楚我想要什么。很抱歉为此浪费您的时间。所以我的数据记录器每小时将有关温度的数据发送到 mysql 数据库中。我想在过去 24 小时内只找到 1 个最小值,在过去 30 天里只找到一个最小值。例如:过去 24 小时最冷的时间是:“2020-10-29 6:00 - 5,5 摄氏度。另一方面:过去 30 天最冷的时间是 2020-10-05 3:00 - 3.00摄氏度。我只想要一个变量表示 24 小时内最冷的时间,一个变量表示过去 30 天。例如 $temp_min_24h 和 $temp_min_30d。谢谢 我已经更新了答案。

以上是关于选择过去 24 小时和过去 ​​30 天的最低和最高温度 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 如何从 MySQL 中选择过去 30 天的记录 [重复]

查看过去 30 天的所有使用情况,按用户和滚动分组

Pandas 时间序列数据 - 每 30 分钟计算过去 24 小时内的唯一值

比特币重返58000美元:过去24小时数万人爆仓

在过去 24 小时内从 MySQL 中选择行并根据间隔 X 跳过行?

当前日期和过去 30 天的总值