SELECT model,
ROUND(corr(
CAST(total_tokens AS DOUBLE),
CAST(duration_ms AS DOUBLE)), 4
) AS token_latency_corr,
ROUND(regr_slope(
CAST(duration_ms AS DOUBLE),
CAST(total_tokens AS DOUBLE)), 4
) AS ms_per_token,
ROUND(regr_r2(
CAST(duration_ms AS DOUBLE),
CAST(total_tokens AS DOUBLE)), 4
) AS r_squared,
regr_count(
CAST(duration_ms AS DOUBLE),
CAST(total_tokens AS DOUBLE)
) AS sample_size
FROM ai_agents.invocations
WHERE duration_ms > 0 AND total_tokens > 0
GROUP BY model
HAVING regr_count(CAST(duration_ms AS DOUBLE),
CAST(total_tokens AS DOUBLE)) > 20
ORDER BY r_squared DESC