У меня есть система Pythonic, которая хранит данные об отсутствии учащихся в базе данных SQLite. Каждая строка содержит время начала и окончания отсутствия, представленное количеством секунд с 01 января 1970 года. Меня попросили добавить функцию, которая ограничивает количество часов отсутствия в неделю.
Звучит легко вывести количество часов, используя такое выражение:
SELECT (sum(ending-starting)/3600)
FROM requests
WHERE student_id = {x}
AND starting BETWEEN {y} AND ({y}+604800)
AND approved = 1
Проблема в том, что пределом должны быть только часы, определенные как «обязательное присутствие». Например, если пользователь определил часы с 8:00 до 17:00 как «обязательное присутствие», то отсутствие, которое начинается в воскресенье в 14:00 и заканчивается в понедельник в одно и то же время, будет рассчитываться в приведенном выше коде 24 часа, а на практике это всего 9 часов.
«Обязательное присутствие» определяется в базе данных как два числовых параметра: «утро» и «вечер» (всегда круглый час). Есть ли способ сделать расчет выше с учетом этих двух чисел?
Если это не может быть сделано в SQL, я хотел бы услышать, как выбрать данные в SQL и затем выполнить вычисления в Python.