【发布时间】:2021-02-02 11:24:23
【问题描述】:
我的数据库中有每小时间隔的数据,格式如下:
EFFECTIVEDATETIME NEW_YORK ETC...
---------------------------------------
2017-01-01 01:00:00.000 44
2017-01-01 02:00:00.000 44
2017-01-01 03:00:00.000 45
2017-01-01 04:00:00.000 44
2017-01-01 05:00:00.000 45
2017-01-01 06:00:00.000 44
2017-01-01 07:00:00.000 44
2017-01-01 08:00:00.000 44
2017-01-01 09:00:00.000 44
2017-01-01 10:00:00.000 46
2017-01-01 11:00:00.000 45
2017-01-01 12:00:00.000 46
2017-01-01 13:00:00.000 47
2017-01-01 14:00:00.000 47
2017-01-01 15:00:00.000 47
2017-01-01 16:00:00.000 47
2017-01-01 17:00:00.000 46
2017-01-01 18:00:00.000 45
2017-01-01 19:00:00.000 43
2017-01-01 20:00:00.000 41
2017-01-01 21:00:00.000 42
2017-01-01 22:00:00.000 42
2017-01-01 23:00:00.000 41
我试图仅在特定范围内(从 08:00:00.000 到 20:00:000)对纽约和后续列进行平均。使用以下代码,我一整天都可以做到这一点。但是,我希望能够仅在 12 小时内平均我的数据。任何帮助将不胜感激,谢谢!
SELECT
CAST(EFFECTIVEDATETIME AS DATE) AS EFFECTIVE_DATE,
AVG(CASE WHEN WEATHERSTATIONID = 'KNYC' THEN TEMPERATURE ELSE NULL END) AS NEW_YORK,
AVG(CASE WHEN WEATHERSTATIONID = 'KNYC' THEN DEWPOINT ELSE NULL END) AS NEW_YORK_DEWPOINT,
AVG(CASE WHEN WEATHERSTATIONID = 'KNYC' THEN RelativeHumidity ELSE NULL END) AS NEW_YORK_HUMIDITY,
MAX(CASE WHEN WEATHERSTATIONID = 'KNYC' THEN TEMPERATURE ELSE NULL END) AS NEW_YORK_DAILY_MAX,
MIN(CASE WHEN WEATHERSTATIONID = 'KNYC' THEN TEMPERATURE ELSE NULL END) AS NEW_YORK_DAILY_MIN
FROM
DBO.WeatherHourly
WHERE
EffectiveDateTime > '2017-01-01'
GROUP BY
CAST(EFFECTIVEDATETIME AS DATE)
ORDER BY
EFFECTIVE_DATE
【问题讨论】:
-
我删除了不一致的数据库标签。请仅使用您真正使用的数据库进行标记。
-
不是 100% 清楚,但似乎如果您将时间检查添加到 EffectiveDateTime 以仅包括 8 到 20 之间的时间,您应该得到您想要的
标签: sql sql-server datetime where-clause