2015-12-02 70 views
-1

我的交易與TRANSACTIONTIME列的表:的SQLServer 2008 - 時間範圍組

enter image description here

如何編寫一個查詢,讓我的交易數量在某些之間發生了一天時間段。例如,從早上9點到晚上9點,間隔3小時?

樣本輸出:

enter image description here

+0

你的例子沒有意義 - 段是什麼? – Hogan

+0

到目前爲止您嘗試了什麼查詢?基本上你需要做的是計算它落入和分組的時間間隔。 – Rabbit

+0

您可以使用ROW_NUMBER()OVER(PARTITION BY ...)生成「Segment」列。 –

回答

0

不太清楚你想做的事,但是這應該讓你開始 - 總計按小時細分的列表:

SELECT HOUR(TransactionTime), COUNT(*) AS Num_Transactions 
FROM YOUR_TABLE_NAME 
GROUP BY HOUR(TransactionTime) 

如果你想每3小時一次,然後使用HOUR(TransactionTime)/3爲您的團隊 - 就像平常一樣。

0

感謝您的所有輸入。我推導出以下解決方案:

SELECT Datename(weekday, time)    AS weekday, 
    ((Datepart(hour, time)/3) - 3) AS segment, 
    Count(*)        AS num_transactions 
FROM "transaction" 
GROUP BY Datename(weekday, time), 
      ((Datepart(hour, time)/3) - 3) 
ORDER BY CASE Datename(weekday, time) 
      WHEN 'Monday' THEN 1 
      WHEN 'Tuesday' THEN 2 
      WHEN 'Wednesday' THEN 3 
      WHEN 'Thursday' THEN 4 
      WHEN 'Friday' THEN 5 
      WHEN 'Saturday' THEN 6 
      WHEN 'Sunday' THEN 7 
      END, 
      ((Datepart(hour, time)/3) - 3);