2012-01-13 71 views
2

我有一個SQL Server 2008數據庫,其中有一個表(datetime數據類型),當下訂單時記錄。SQL查詢一天中的幾小時

我想運行一個查詢,該查詢將給出任何給定日期或日期範圍內每小時訂單總數的細目,但我不確定寫入查詢的最佳方式。

回答

3

它應該是沿着線的東西:

SELECT DATEPART(HOUR, OrderDate) AS [Hour], COUNT(*) AS [Count] 
FROM [Orders] 
WHERE OrderDate BETWEEN @StartDate AND @EndDate --or whatever criteria 
GROUP BY DATEPART(HOUR, OrderDate) 
+0

WHERE語句的工作很好。我完全拋棄了它。 – DataGirl 2012-01-13 21:52:13

0

你可能尋找類似:

;WITH OrdersPerHour AS 
(
    SELECT 
     CAST(OrderDate AS DATE) 'OrderDate', 
     DATEPART(HOUR, OrderDate) AS 'Hour', 
     SalesAmount 
    FROM 
     dbo.YourOrderTable 
) 
SELECT 
    OrderDate, Hour, 
    COUNT(*),   -- number of orders 
    SUM(SalesAmount) -- sum of the amounts for those orders 
FROM 
    OrdersPerHour 
WHERE 
    OrderDate = '20120113' -- or whatever you're looking for 
GROUP BY 
    OrderDate, Hour 

不知道你指的是訂單金額的總和 - 或訂單數 - 當你說擊穿每個訂單的總量小時 - 如果您需要計數,只需使用COUNT(*)而不是SUM(SalesAmount)我放入我的查詢。

0

您可以使用DATEPARTGROUP BY得到這個:

SELECT DATEPART(Hour, DateField), COUNT(*) 
FROM Orders 
WHERE Date = @DateParam -- or your range check here 
GROUP BY DATEPART(Hour, Datefield) 
0

我相信這會是這麼簡單:

SELECT 
     [Hour] = DATEPART(HOUR,DateTimeField) 
     ,Orders = COUNT(*) 
    FROM 
     tblORDERS 
    GROUP BY 
     DATEPART(HOUR,DateTimeField) 
相關問題