Срез на момент времени средствами sqlite
Есть вот такая база данных
import sqlite3
conn = sqlite3.connect('entrance.db')
cur = conn.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS staff(
id INTEGER PRIMARY KEY,
name TEXT);
""")
cur.execute("""CREATE TABLE IF NOT EXISTS buildings(
id INTEGER PRIMARY KEY,
name TEXT);
""")
cur.execute("""CREATE TABLE IF NOT EXISTS state(
id INTEGER PRIMARY KEY,
name TEXT);
""")
cur.execute("""CREATE TABLE IF NOT EXISTS currentstate(
id INTEGER PRIMARY KEY,
staff_id NUMERIC,
state_id NUMERIC,
buildings_id NUMERIC,
time timestamp);
""")
conn.commit()
q=("""INSERT INTO 'staff'
('name')
VALUES (?);""")
value=[("Иванов",), ("Петров",), ("Сидоров",), ("Леонов",), ("Андреев",)]
cur.executemany(q, value)
q=("""INSERT INTO 'buildings'
('name')
VALUES (?);""")
value=[("A",), ("B",), ("C",)]
cur.executemany(q, value)
q=("""INSERT INTO 'state'
('name')
VALUES (?);""")
value=[("Пришел",),("Ушел",),("Вышел",), ("Вернулся",)]
cur.executemany(q, value)
q=("""INSERT INTO 'currentstate'
('staff_id', 'state_id', 'buildings_id', time)
VALUES (?, ?, ?, ?);""")
value=[(1, 1, 1, "2020-10-20 09:15:46"
),
(2, 1, 2, "2020-10-20 10:15:46"),
(1, 3, 2, "2020-10-20 11:15:46"),
(3, 1, 1, "2020-10-20 12:15:46")
]
cur.executemany(q, value)
conn.commit()
Написал вот такую базу данных. Хочу спросить, можно ли средствами sqlite получить временной срез, чтобы получить информацию, где находятся сотрудники на момент времени. Пока что идея только в том, чтобы сделать выборку за весь день до нужно момента (отсортировав данные предварительно по времени) в список, потом по каждому визитеру найти последний элемент в списке (либо первый в зависимости от сортировки), потом удалить все остальные записи по сотруднику, либо записать этот рекорд в новый финальный список.
Возможно, можно сделать выборку крайних значнений для каждого сотрудника в таблице "currentstate" методами sql? либо есть более адекватные способы решить данную задачу?