2015-07-10 134 views
-1

我有被每隔10分鐘用流量的數據更新,在這一天,我需要一個查詢,將產生的平均流量,最小流量值,並將其在(相同的發生,最大的時間結束時表),然後是當天的總流量。我有這個到目前爲止:如何查找SQL Server中的最大值/最小值以及發生時間?

SELECT * 
FROM [WS6].[dbo].[MasterData] 
Where [_Datetime] between '2015-07-06' and '2015-07-06 23:59:59' 

這讓我整天的數據,但我怎麼能篩選我需要的值?謝謝

+2

你需要描述你的表,字段,數據類型,等等。 – sstan

+0

我使用2008表給我144項(這是每10分鐘從它連接到SCADA流更新),他們是真正的類型整數。 – cdomination

回答

2

在SQL Server 2012中,你可以使用first_value()

SELECT avg(flow), min(flow), max(flow), sum(flow), 
     first_value(_DateTime) over (order by flow asc) as minTime, 
     first_value(_DateTime) over (order by flow desc) as maxTime 
FROM [WS6].[dbo].[MasterData] 
Where [_Datetime] >= '2015-07-06' and [_Datetime] < '2015-07-07'; 

在早期版本中,您可以使用窗口函數或cross apply

+0

'first_value()'在SQL Server 2012中也可用 – HingeSight

+0

@HingeSight。 。 。謝謝。修正了。 –

0

這取決於你試圖得到的最小值和最大值。例如,如果你想獲得這些日期間場的最小值和最大值,你會做這樣的事情,你想要的值_field是申請(將返回1個或沒有行):

SELECT MIN(_field) AS 'MIN', MAX(_field) AS 'MAX' 
FROM [WS6].[dbo].[MasterData] 
Where [_Datetime] between '2015-07-06' and '2015-07-06 23:59:59' 

如果你正試圖獲得由另一個字段分組的許多字段的最小值和最大值,你可以嘗試類似這樣的操作(可能會返回很多行,1行或不行)。

SELECT Group_by_field, MIN(_field) AS 'MIN', MAX(_field) AS 'MAX' 
FROM [WS6].[dbo].[MasterData] 
Where [_Datetime] between '2015-07-06' and '2015-07-06 23:59:59' 
Group by Group_by_field 

如果你提供了一個你想要做的樣本表和樣本輸出將會很有幫助。

+0

我想附上我的表的截圖給你看的傢伙,但它說我至少需要10聲譽附加圖片... – cdomination

+0

只需複製並粘貼出來的MMC並在一個代碼塊扔在,不必須很漂亮,只要我們能夠弄清楚你要做什麼! –

相關問題