我有读数的SQL表每10分钟服用。列是DATE_TIME(DATETIME)和Steam_Flow(真实)。我想获得一个总结,只有返回一行,每年代表该年度的最高平均流量(按小时)进行。
我有以下的那么远,
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
不知道你的表和变量类型的约束:
SELECT MAX(Steam_Flow), YEAR(Date_Time) FROM Boiler_Data GROUP BY YEAR(Date_Time);