我需要 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/