사용자와 봇 (기본적으로 상태 시스템) 간의 모든 메시지를 저장하는 테이블이 있으며이 테이블의 모든 메시지/응답 쌍을 찾으려고합니다. , 각 사용자의 평균 응답 시간을 계산합니다. 주의해야 할 것은 모든 보내는 메시지가 응답을받는 것은 아닙니다.Postgres : 봇과의 상호 작용으로 인한 평균 사용자 응답 시간
각 행에는 message_id, user_id, created_at (timestamp), state_code 및 outgoing (boolean)이 저장됩니다.
나는 래그와 리드를 사용하여 메시지의 관련 쌍을 찾고 각 사용자에 대해 평균을 구한 created_at 값의 차이를 계산할 목적으로 창 함수를 살펴 보았습니다. 각 사용자의 평균을 제공합니다. 응답 시간. 이 문제는 두 메시지가 동일한 sate_code로 발행되었음을 보증 할 수있는 방법이 없다는 것입니다. 아이디어?
업데이트 : 사용자가 보낸 메시지가 동일한 상태 코드 인 경우 해당 메시지에 대한 응답임을 보증 할 수 있습니다. 그래서,이 경우에는 예
╔════════════╦═════════╦════════════╦════════════╦══════════╗
║ message_id ║ user_id ║ created_at ║ state_code ║ outgoing ║
╠════════════╬═════════╬════════════╬════════════╬══════════╣
║ 1 ║ 11 ║ mm/dd/yy ║ 20 ║ t ║
║ 2 ║ 11 ║ mm/dd/yy ║ 20 ║ f ║
║ 3 ║ 11 ║ mm/dd/yy ║ 22 ║ t ║
║ 4 ║ 11 ║ mm/dd/yy ║ 21 ║ t ║
║ 5 ║ 12 ║ mm/dd/yy ║ 45 ║ t ║
║ 6 ║ 12 ║ mm/dd/yy ║ 46 ║ f ║
║ 7 ║ 12 ║ mm/dd/yy ║ 46 ║ t ║
║ 8 ║ 12 ║ mm/dd/yy ║ 20 ║ f ║
║ 9 ║ 12 ║ mm/dd/yy ║ 43 ║ t ║
║ 10 ║ 13 ║ mm/dd/yy ║ 20 ║ t ║
╚════════════╩═════════╩════════════╩════════════╩══════════╝
위한 쌍, 그럼에도 불구하고, 사용자 1 보낸 메시지 만도 1 및도 2 물질이 상태 (20)로부터의 하나에 응답하는 메시지 (1)과 (2), 및 메시지 (6) 및 제 있다 상태 (20)
관리를 위해 필요한 비즈니스 로직을 보여줍니다 몇 가지 예를 들어 데이터 나 의사 코드를 제공하기 위해 어떤 메시지가 관련이 있습니까? – MatBailie
물론 더미 데이터를 추가했습니다! – avyfain