我有一個SQL Server 2008數據庫,其中有一個表(datetime
數據類型),當下訂單時記錄。SQL查詢一天中的幾小時
我想運行一個查詢,該查詢將給出任何給定日期或日期範圍內每小時訂單總數的細目,但我不確定寫入查詢的最佳方式。
我有一個SQL Server 2008數據庫,其中有一個表(datetime
數據類型),當下訂單時記錄。SQL查詢一天中的幾小時
我想運行一個查詢,該查詢將給出任何給定日期或日期範圍內每小時訂單總數的細目,但我不確定寫入查詢的最佳方式。
它應該是沿着線的東西:
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)
你可能尋找類似:
;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)
我放入我的查詢。
您可以使用DATEPART
和GROUP BY
得到這個:
SELECT DATEPART(Hour, DateField), COUNT(*)
FROM Orders
WHERE Date = @DateParam -- or your range check here
GROUP BY DATEPART(Hour, Datefield)
我相信這會是這麼簡單:
SELECT
[Hour] = DATEPART(HOUR,DateTimeField)
,Orders = COUNT(*)
FROM
tblORDERS
GROUP BY
DATEPART(HOUR,DateTimeField)
WHERE語句的工作很好。我完全拋棄了它。 – DataGirl 2012-01-13 21:52:13