从属于时间范围的表中获取最大值及其对应的3列

时间:2016-06-28 01:57:08

标签: sql-server sql-server-2012 group-by max aggregate-functions

enter image description here我在sql server中有一个表,每隔15分钟就有一个数据值和时间戳。从2015年1月到2016年6月。每隔96个间隔(间隔15分钟,24小时内96个)有一个数据值,是当天最高的(24小时)。我有另外3列叫做a,b,c。我需要找到每96个间隔集的最大值及其各自的A,B,C值。我尝试使用max和group by但无法获得确切的数字。有人可以帮我这个。

我已经发布了数据外观的快照。所以在这种情况下,你看的是Jan 02,我需要KW的最大值,整个96个区间。更重要的是,我需要相应最大值的a相,b相,c相值。

2 个答案:

答案 0 :(得分:0)

我假设你每天都想要最大值。您可以将row_number()用于此目的:

select t.*
from (select t.*,
             row_number() over (partition by cast(timestamp as date)
                                order by onedatavalue desc
                               ) as seqnum
      from t
     ) t
where seqnum = 1;

答案 1 :(得分:0)

假设您希望每天获得最大值,您可以在子查询中使用Max,如下所示:

select * from DATATABLE as D 
where KW = (Select MAX(KW) from DATATABLE 
            where DAY(KEY_POINT_DTTM_15MIN) = DAY(D.KEY_POINT_DTTM_15MIN)) 

我猜你正在使用max(),但你忘记了DAY()函数..