如何按年返回最高的平均小时值

时间:2019-02-07 22:57:15

标签: sql-server

我有一个SQL表,每10分钟读取一次。 列是Date_Time(DateTime)和Steam_Flow(Real)。 我想得到一个摘要,该摘要每年仅返回一行,代表该年的最高平均流量(按小时)。

Table and Expected Results

到目前为止,我有以下内容...

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

2 个答案:

答案 0 :(得分:0)

您可以使用汇总查询来计算每小时的平均流量,然后在外部查询中按年份汇总。

在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

答案 1 :(得分:0)

在不知道表的本质和变量类型的情况下:

def post_fix(string):
     lst = []
     for i in string:
         if '(' in lst:
             pass
         elif valid(i) is True:      
             int(i)
             lst.append(i)
         elif '+' in string:
             '+' == sum(lst)
             print(sum(lst))

  post_fix('1 2 3 +')