Problems / Drop-Off Report / Editorial
step_number, step_name
COUNT(DISTINCT user_id)
COUNT(*)
pct_of_first
crossJoin
step_number
Funnel tables are event logs, not user lists — the unit you count must be the *user*, so DISTINCT is not optional. And "percent of first step" is a whole-report constant, not a per-row calculation: computing it once (CTE + scalar subquery / crossJoin) keeps the query honest and makes the 100.00 on step 1 fall out naturally.
DISTINCT
Solve Drop-Off Report yourself →