SQL хочет рассчитать часы и монеты каждого emp

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

Также есть столбец типа, где записи 0 и 1 означают 0 IN и 1 Out.

Ниже показано изображение для справки о том, как у меня есть данные в SQL и какой мне нужен отчет.

Пожалуйста, не используйте изображения (как указано в правилах вопросов), используйте уценку таблицы.

Dale K 04.07.2024 13:14

Я полагаю, вы имеете в виду минуты, а не мятные?

Dale K 04.07.2024 13:15

А изображения идентичны? Зачем публиковать их дважды!

Dale K 04.07.2024 13:17

Где твой код! что ты уже испробовал? Stack Overflow не является бесплатным сервисом для написания кода. Предполагается, что вы попытаетесь написать код самостоятельно. После дополнительных исследований если у вас возникла проблема, вы можете опубликовать то, что вы пробовали, с четким объяснением того, что не работает, и предоставить Минимальный, полный и проверяемый пример

Roman Marusyk 04.07.2024 13:19

Попробуйте запрос, используя DATEDIFF(минута,[Время на входе], [Тайм-аут]) в качестве [Всего минут]. Следуйте этому примеру, чтобы отформатировать его как часы и минуты stackoverflow.com/questions/17733616/…

Bart McEndree 04.07.2024 13:33

Разве об этом не спрашивали пару дней назад? Хотя и с изображениями в темном режиме stackoverflow.com/questions/78693913/…

siggemannen 04.07.2024 13:35

Как вы хотите, чтобы результаты форматировались, когда сотрудник приходит на работу в 23:00 и уходит после полуночи?

Bart McEndree 04.07.2024 14:09

Как вы хотите, чтобы результаты были отформатированы, если сотрудник работает более 48 часов?

Bart McEndree 04.07.2024 14:30

Как вы хотите, чтобы результаты были отформатированы, если у сотрудника несколько входов/выходов в день, или несколько входов с 0 выходами, или несколько выходов с 0 входов, или странное несовпадение входов/выходов за день?

Bart McEndree 04.07.2024 14:38
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
9
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я использовал CTE, чтобы разбить вычисления и сделать их более читабельными. Если у каждого сотрудника есть только 2 записи в день, можно использовать min/max и игнорировать флаг InOut.

WITH CTE as
(  
SELECT CONVERT(date, TimeDate) as [Date], 
       EmpNumber,  
       CAST(Min(TimeDate) as time) as TimeIN, 
       CAST(Max(TimeDate) as time) as TimeOut ,
       DATEDIFF(minute,CAST(Min(TimeDate) as time),CAST(Max(TimeDate) as time)) as TotalMinutes           
FROM TableEntry
GROUP BY CONVERT(date, TimeDate),EmpNumber
)
SELECT [Date], EmpNumber, 
       RIGHT('0'+CAST(DATEPART(hour, TimeIN) as varchar(2)),2) + ':' +
       RIGHT('0'+CAST(DATEPART(minute, TimeIN)as varchar(2)),2) as TimeIn,
       RIGHT('0'+CAST(DATEPART(hour, TimeOut) as varchar(2)),2) + ':' +
       RIGHT('0'+CAST(DATEPART(minute, TimeOut)as varchar(2)),2) as TimeOut,      
       CAST(TotalMinutes / 60 AS VARCHAR(8)) + ':' + FORMAT(TotalMinutes % 60, 'D2') as TotalMinutes
FROM CTE

рабочий пример

Дата EmpNumber Время в Таймаут Всего минут 2024-07-02 100001 09:23 19:06 9:43 2024-07-03 100001 09:37 19:23 9:46

Один из способов справиться со сценарием, когда сотрудник работает после полуночи dbfiddle.uk/LYu1Ri87

Bart McEndree 04.07.2024 14:23

Спасибо за ваш быстрый ответ. Только одна проблема: у некоторых сотрудников есть несколько входов и выходов, а вторая проблема заключается в том, что если кто-то пропустил удар, например, пропущенный вход или выход, то время не должно отображаться, а результат должен быть нулевым. но согласно вашему запросу, это здорово, но проблема только в том, что если какой-либо удар пропустил, оба столбца показывают одно и то же время, а результат показывает ноль, что правильно. Пожалуйста, помогите мне и в этом.

Feroz Khan 04.07.2024 15:14

Другие вопросы по теме