【问题标题】:How can I make a GROUP BY on a time period?如何在某个时间段内进行 GROUP BY?
【发布时间】:2011-05-27 19:29:35
【问题描述】:

我有带有时间戳、温度和湿度的表格。我想在湿度高于 80% 的时期内获得平均温度。类似的东西

选择 最小 (DTM), 最大 (DTM), 平均(TMP) 分组依据(HMD>80)

这可能吗?

谢谢

雨果

我需要定义从湿度上升到 80% 以上开始到低于 80% 结束的时间段。然后我必须得到 BEGIN 时间戳 END 时间戳和平均温度

【问题讨论】:

  • 你想按什么分组?您应该有不同的具体值来分组,例如时间戳的日期。
  • 所以您正在寻找在整个范围内湿度保持在 80% 以上的一个或多个连续时间戳范围?

标签: mysql


【解决方案1】:

在 Group BY 子句中,您需要使用 CASE 而不是 WHERE :

SELECT MIN (DTM), MAX (DTM), AVG(TMP) GROUP BY (CASE WHEN HMD>80 THEN HMD END);

【讨论】:

    【解决方案2】:

    更像:

    SELECT MIN (DTM), MAX (DTM), AVG(TMP) FROM tbl WHERE HMD>80 GROUP BY location
    

    不过,您的主要问题是提取有效范围,因为 HMD > 80 将返回所有符合条件的行,无论它们是否处于同一时期。

    如果您确实需要事先提取有效范围,您可能需要访问此线程:

    Get list with start and end values from table of datetimes

    【讨论】:

    • location 是从哪里来的?
    • 它无处不在。他的查询无论如何都是无效的,因为它没有from 子句。但我假设他正在尝试平均每个城市/区域/位置/某事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多