@NickelFace

Сформировать запрос MS SQL на выборку минимального события и вычитания из него определенного времени?

Как составить запрос Tsql на отбор нахождение пользователя на рабочем месте?
Здесь можно взять основу БД
А тут его Бэкап
Вот тут fidle

Задание:
  1. хочу составить запрос на нахождение на каждого пользователя события за месяц(или промежуток времени)
  2. Далее взять минимальное событие за каждые сутки(если за месяц,то все события)
  3. Далее взять максимальное событие событие за каждые сутки
  4. Посчитать количество входов/выходов
  5. Если количество входов > выходов , то вычитаем 21:00 при достижении текущего времени(DATETIMEFROMPARTS)
  6. Если количество входов < выходов , то вычитаем 21:00 при достижении текущего времени
  7. Если количество входов = выходов , то вычитаем выход - вход

5d76613446cda092412771.png
Мной уже решён вопрос с запросом на промежуток этого месяца
SELECT *
from [EVENTS] 
WHERE month([date]) = month(getdate()) and year([date]) = year(getdate())

Если нужно промежуток то BETWEEN можно использовать
Вопрос,как считать количество Event_Id =3 и Event_Id = 4 (события входа и выхода) ,а потом сравнивать и выводить за месяц?
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 1
BojackHorseman
@BojackHorseman
...в творческом отпуске...
как обычно))

SELECT 
 COUNT(*) AS_all_events,  
 SUM(CASE WHEN Event_Id = 3 THEN 1 ELSE 0 END) as _enter_events,
 SUM(CASE WHEN Event_Id = 4 THEN 1 ELSE 0 END) as _exit_events
FROM ...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы