php - MySQL计算降雨量

标签 php mysql

我需要 MySQL 查询方面的帮助。基本上是为了简化它:

我有一张包含来自气象站的气象数据的表格。测量的参数之一是降雨量。我设法将计算结果转化为一个表格,其中第一列包含天数(2 月 1 日、2 月 2 日、2 月 3 日等),第二列给出该特定日期的每日降雨量(0、3.5、14.2 等)。 )。

现在我接下来要做的是计算最长干旱期和最长湿润期。换句话说,连续几天降雨量为 0 的最长时期,湿润期正好相反 - 最连续的“非零”天数。

在输出中我想要 - 期间的天数、开始日期和结束日期。所以基本上有两个变量,比如 dry_count、dry_date,然后我将其转换为输出,例如:“天数:dry_count、dry_date”。

我最初将它作为两个变量(dry_start 和 dry_end),但这不起作用,因为如果有两种情况,例如最长周期相同,那么我会希望它像这样。 2月3日 - 2月5日、3月8日 - 3月11日 - 因此日期最终需要保存为一个变量,如果它不为空,那么它将添加一个逗号和另一个句点。

我尝试了各种方法但没有成功。数据是在 PHP 站点上从 MySQL 数据库中提取的,因此我在 while 语句中一行一行地获取结果。有什么帮助吗?我希望我解释得很好。

最佳答案

如果我理解正确的话,您是否正在尝试将有关潮湿期和干旱期的新数据保存回行中,以供以后使用?

我认为这是为了随着每个新的一天的添加,很容易重新计算......或者因为数据正在转移到其他地方?

无论如何,如果是这种情况,那么您可以采取的一种方法是添加两个新列:“wet_count”和“dry_count”。对每一行进行计数。如果该行的湿/干值与前一天,然后增加该值。如果没有,则将值归零并将适当的值设置为新值。如下所示:

day       rainfall    wet_count    dry_count
Feb 1     1           1            0
Feb 2     0.5         2            0
Feb 3     0.75        3            0
Feb 4     0           0            1
Feb 5     0           0            2
Feb 6     0           0            3
Feb 7     0.5         1            0
Feb 8     1.25        2            0
Feb 9     1.5         3            0
Feb 10    3.5         4            0
Feb 11    4.5         5            0

然后,您可以简单地从表中提取最大值,返回到该日期之前该列中的第一个 1,然后您就可以得到“最大时期”和“开始时间”。

对于每个新的一天的数据,您只需计算与前一天的数据,然后运行两个非常简单的数据库搜索即可获得新的“最大周期”。

更具体地说,您提取“wet_count”的不同值,按降序排列,并仅采用第一个答案。您在数据库中进行选择,其中 all wet_count = 该最大值或 1。您将获得与该特定值匹配的潮湿期数量,以及可能的开始日期。最大值之前的 1 将是开始日期。

关于php - MySQL计算降雨量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16482915/

相关文章:

php - 如何在 CakePHP 中为一个模型动态使用多个数据库

php 安全和使用 html 链接 (GET) 标记要删除的 mysql 记录

php - 使用正则表达式选择一些图像标签

php - Laravel 4.1+ 中的环境检测

php - IMAP 和 PHP - 从已发送和收件箱文件夹中获取所有电子邮件

php - 如何使用 php 检测未选中的复选框?

mysql - 如何使用EntityFramework Core连接mysql数据库?

php - 登录时显示数据库中的个人资料数据

php - 一个脚本出现 "MySQL PHP extension not available"错误,而其他一切正常

java - 自动创建数据库 springboot 和 mysql