如何在某个时间段内进行 GROUP BY?
Posted
技术标签:
【中文标题】如何在某个时间段内进行 GROUP BY?【英文标题】:How can I make a GROUP BY on a time period? 【发布时间】:2011-05-27 19:29:35 【问题描述】:我有带有时间戳、温度和湿度的表格。我想在湿度高于 80% 的时期内获得平均温度。类似的东西
选择 最小 (DTM), 最大 (DTM), 平均(TMP) 分组依据(HMD>80)
这可能吗?
谢谢
雨果
我需要定义从湿度上升到 80% 以上开始到低于 80% 结束的时间段。然后我必须得到 BEGIN 时间戳 END 时间戳和平均温度
【问题讨论】:
你想按什么分组?您应该有不同的具体值来分组,例如时间戳的日期。 所以您正在寻找在整个范围内湿度保持在 80% 以上的一个或多个连续时间戳范围? 【参考方案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
子句。但我假设他正在尝试平均每个城市/区域/位置/某事。以上是关于如何在某个时间段内进行 GROUP BY?的主要内容,如果未能解决你的问题,请参考以下文章
hive distribute by 和group by 的区别