Я пытаюсь построить запрос Python Postgresql из моих данных, где я могу иметь общее среднее время онлайн-сессий (учитывая следующее):
Полные сессии состоят из 3 последовательных 1Часовые слоты.Сеансы могут длиться 1, 2 или 3 часа, в зависимости от того, имеют ли они 0, 1 или 2 последовательных слота.
Мой сценарий выглядит так в данный момент (я пробовал другие подходы через Панды, но я должен оставить его длявызов postgres)
import psycopg2
conn = psycopg2.connect(
dbname='test_svr',
host='127.0.0.1',
port='5432',
user='admin',
password='admin',
)
conn.autocommit = True
cursor = conn.cursor()
cursor.execute('''
SELECT pc_id, timestamp_id FROM session_and_slots
GROUP BY pc_id, timestamp_id
ORDER BY pc_id, timestamp_id
''')
print("| PC | | Timestamp |")
print('\n'.join(', '.join(map(str, x)) for x in cursor.fetchall()))
Моя база данных:
| PC | | Timestamp |
1, 2018-03-15 11:00:00
1, 2018-03-15 12:00:00
1, 2018-03-15 13:00:00
1, 2018-03-15 14:00:00
1, 2018-03-15 15:00:00
2, 2018-03-15 01:00:00
2, 2018-03-15 02:00:00
2, 2018-03-15 03:00:00
2, 2018-03-15 04:00:00
2, 2018-03-15 08:00:00
2, 2018-03-15 09:00:00
2, 2018-03-15 10:00:00
2, 2018-03-15 11:00:00
2, 2018-03-15 12:00:00
3, 2018-03-15 10:00:00
3, 2018-03-15 11:00:00
3, 2018-03-15 12:00:00
3, 2018-03-15 13:00:00
3, 2018-03-15 18:00:00
4, 2018-03-15 13:00:00
4, 2018-03-15 14:00:00
5, 2018-03-15 13:00:00
Мои ожидаемые результаты должны быть следующими:
3hr sesh:4
2hr sesh:3
1hr sesh:4
AVG time for sesh: 1,5 hrs
У меня естьтрудности работы с интервалами времени для оценки 1-часовой разности последовательностей.Любые мысли, чтобы адаптировать мой запрос и / или создание новой таблицы?
Xoxo