Problems / Three-Step Ordered Funnel / Editorial
MIN(event_time) WHERE event_type = 'signup'
activate
MIN
event_time > signup_time
activate_time
COUNT(*)
Ordered funnels are recursive time-anchored joins: each stage's qualification depends on a *derived* timestamp from the previous stage, not on the raw event log. That is why the loose-funnel idiom (three conditional distinct counts) overstates every stage — it would count a user who purchased first and signed up later. The chain-of-CTEs shape scales to any depth funnel, and "MIN of qualifying events becomes the next anchor" is the exact semantics of "did the steps in order".
Solve Three-Step Ordered Funnel yourself →