Время работы офиса: 10:00 am to 18:00
. Офисная политика: На самом деле, наша офисная политика заключается в том, чтобы выплачивать сотрудникам стипендию за сверхурочную работу, поэтому они рассчитывают сверхурочную работу только выше 18:00 pm
часов, даже если человек прибывает в офис по телефону 17:00 pm
и работал до 18:54 pm
, даже тогда ему будет выплачено 54mins overtime
, кроме того, что он не работал, это приведет к вычету из заработной платы, но все же будет применяться для выплаты стипендии сверхурочным.Расчет времени в соответствии с конкретным временем
Вопрос: Я написал этот запрос, чтобы рассчитать общее время работы человека в день, продолжительность его работы, я имею в виду. Теперь я пытаюсь вычислить новый столбец OVERTIME
, который должен показывать продолжительность сверхурочной работы, которую совершил человек, если и только если человек работал выше, чем 18:00 pm
, то время должно подпадать под овертаймовую колонку другим способом 00:00
, так что помогите мне в этом
WITH Times AS
( SELECT emp.EmplID,
emp.EmplName,
InTime = MIN(atd.RecTime),
OutTime = MAX(atd.RecTime),
TimeWorked = DATEDIFF(MINUTE, MIN(atd.RecTime), MAX(atd.RecTime)),
[DateVisited] = atd.RecDate
FROM AtdRecord atd
INNER JOIN HrEmployee emp
ON atd.EmplID = emp.EmplID
GROUP BY emp.EmplID, emp.EmplName, atd.RecDate
HAVING COUNT(atd.RecTime) > 1
)
SELECT t.EmplID,
t.EmplName,
t.InTime,
t.OutTime,
t.DateVisited,
TimeWorked = CONVERT(CHAR(5), DATEADD(MINUTE, t.TimeWorked, 0), 8)
FROM Times t
Выход:
Выход раствора Вигнеш Кумар:
Я добавил здесь новое решение. Попробуйте этот –
Это хороший, но он показывает сверхурочную работу, даже если человек работал с 9:00 до 17:15, но нет, я хочу если и только если человек работал выше 18:00 вечера, чем показало сверхурочное время, например 13:15 до 18:20, затем OVERTIME = 20mins –
Можете ли вы разместить образцы данных и в sqlfiddle –