Función de avance / retraso condicional PostgreSQL?

Tengo una mesa como esta:

Name   activity  time

user1  A1        12:00
user1  E3        12:01
user1  A2        12:02
user2  A1        10:05
user2  A2        10:06
user2  A3        10:07
user2  M6        10:07
user2  B1        10:08
user3  A1        14:15
user3  B2        14:20
user3  D1        14:25
user3  D2        14:30

Ahora, necesito un resultado como este:

Name   activity  next_activity

user1  A2        NULL
user2  A3        B1
user3  A1        B2

Me gustaría verificar para cada usuario la última actividad del grupo A y qué tipo de actividad tuvo lugar después del grupo B (la actividad del grupo B siempre tiene lugar después de la actividad del grupo A). Otros tipos de actividad no son interesantes para mí. He tratado de usar ellead() función, pero no ha funcionado.

¿Cómo puedo resolver mi problema?

Respuestas a la pregunta(2)

Su respuesta a la pregunta