SQL-запрос для часов дня - PullRequest
2 голосов
/ 14 января 2012

У меня есть база данных SQL Server 2008 с таблицей, в которой есть запись столбца (datetime тип данных) при размещении заказа.

Я хотел бы выполнить запрос, который даст разбивку общего количества заказов в час на любой заданный диапазон дат или дат, но я не уверен, как лучше написать запрос.

Ответы [ 4 ]

3 голосов
/ 14 января 2012

Это должно быть что-то вроде:

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 голосов
/ 14 января 2012

Я думаю, это будет так просто:

    SELECT
         [Hour] = DATEPART(HOUR,DateTimeField)
        ,Orders = COUNT(*)
    FROM
        tblORDERS
    GROUP BY
        DATEPART(HOUR,DateTimeField)
0 голосов
/ 14 января 2012

Вы можете использовать DATEPART и GROUP BY, чтобы получить это:

SELECT DATEPART(Hour, DateField), COUNT(*)
FROM Orders
WHERE Date = @DateParam -- or your range check here
GROUP BY DATEPART(Hour, Datefield)
0 голосов
/ 14 января 2012

Вы, вероятно, ищете что-то вроде:

;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) я вставил свой запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...