sql-server - 如何按年返回最高平均小时值
问题描述
我有一个每 10 分钟读取一次的 SQL 读数表。列是 Date_Time (DateTime) 和 Steam_Flow (Real)。我想得到一个摘要,它每年只返回一行,代表那一年的最高平均流量(按小时)。
到目前为止,我有以下...
SELECT
CAST(Date_Time AS DATE) [Date],
DATEPART(hour, Date_Time) [Hour],
Avg(Steam_Flow) [Avg Flow]
FROM Boiler_Data
WHERE
Date_Time >= '2018-12-31 21:00'
and Date_time <= '2019-01-01 02:50:'
GROUP BY
CAST(Date_Time AS DATE),
DATEPART(hour, Date_Time)
ORDER BY [Avg Flow] Desc
解决方案
您可以使用聚合查询来计算每小时的平均流量,然后在外部查询中按年份聚合。
在 MySQL 中:
SELECT x.date_year, MAX(x.Avg_Flow)
FROM (
SELECT YEAR(date_time) date_year, avg(Flow) Avg_Flow
FROM mytable
GROUP BY YEAR(date_time), DATE_FORMAT(date_time, '%Y-%m-%d %h')
) x
GROUP BY x.date_year
在 SQL Server 中:
SELECT x.date_year, MAX(x.Avg_Flow)
FROM (
SELECT YEAR(date_time) date_year, avg(Flow) Avg_Flow
FROM mytable
GROUP BY YEAR(date_time), DATEADD(hour, datediff(hour, 0, date_time), 0)
) x
GROUP BY x.date_year
推荐阅读
- flutter - 如何使用图像拇指创建一个范围滑块,该滑块动画到 Flutter 中按钮点击的某个位置?
- unity3d - Html 敏捷包和 Unity
- javascript - redux thunk 如何调用 curried 异步 thunk 函数?
- asciidoc - 如何将 asciidoc 属性转换为文档
- php - 除index.php文件外的php文件被访问时如何返回404?
- typescript - 在 TypeScript 中包装具有泛型类型保留的函数的最佳方法是什么?
- reactjs - 如何使用 Redux 获取数据
- python - 每当用户得到正确答案时,我如何每次添加 +1
- notepad++ - 如何在Notepad ++中仅将括号中的文本转换为大写
- angular - 是否可以使用多个 ::ng-deep 标识符在深度嵌套的组件上应用样式?