Как получить общий потраченный час в день - PullRequest
2 голосов
/ 08 апреля 2019

У меня есть столбец, и мне нужно рассчитывать количество часов в день (каждый последующий час +1)

enter image description here

Ожидаемый результат:

Date       | HourSpent
2017-12-08 | 6

Моя попытка кода:

SELECT Cast(TransDateTime as Date), DateDIFF(hour,MIN(TransDateTime),MAX(TransDateTime)) as DateTime 
FROM GuestTransLedger where GuestExtID = '2016-120-5624873' 
GROUP BY Cast(TransDateTime as Date) ORDER BY 1 DESC

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

Попробуйте это:

select convert(date, datetime_column) as Date, count(distinct datepart(hour,datetime_column)) as HourSpent
from tbl
group by convert(date, datetime_column)
1 голос
/ 08 апреля 2019

Подход с использованием таблицы календаря может быть хорошим выбором здесь:

WITH cte AS (
    SELECT '2017-12-08 00:00:00' AS dt UNION ALL
    SELECT '2017-12-08 01:00:00' UNION ALL
    SELECT '2017-12-08 02:00:00' UNION ALL
    ...
    SELECT '2017-12-08 22:00:00' UNION ALL
    SELECT '2017-12-08 23:00:00'
)

SELECT
    CONVERT(date, t1.dt) AS Date,
    COUNT(DISTINCT t1.dt) AS HoursSpent
FROM cte t1
INNER JOIN yourTable t2
    ON t2.DateTime >= t1.dt AND t2.DateTime < DATEADD(HOUR, 1, t1.dt)
GROUP BY
    CONVERT(date, t1.dt);

Единственная сложная часть этого ответа - создание таблицы почасового календаря. См. Здесь , чтобы узнать, как это сделать в SQL Server.

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