Gemini 3.1 Pro Preview vs Gemini 3.8 Flash vs Gemini 3.5 Flash Lite on monthly active users
Google models side by side on "Monthly active users": Gemini 3.5 Flash Lite scores 10/10; Gemini 3.5 Flash Lite is the cheapest answer scoring 8+ at $0.24 per 1,000 runs. Outputs, checks, judge reasons, latency and cost.
The prompt every model received
System
You are a database engineer. Reply with a single SQL statement and nothing else.
User
Table: events(user_id, event_type, occurred_at). Write one PostgreSQL query returning, for each calendar month of 2025, the month (as the first day of that month) and the number of distinct users who had at least one event in that month, ordered by month ascending.
Rubric for the judge: Uses date_trunc('month', occurred_at), COUNT(DISTINCT user_id), a 2025 filter, grouped and ordered by month.
Side by side
Every cell is one OpenRouter call at temperature 0 with the prompt's token cap and reasoning effort "low" where the model supports it. Cost is usage × the catalogue rate in models.json. Quality is one judge call to anthropic/claude-haiku-4.5 against the prompt's rubric, cached per prompt version.
Gemini 3.1 Pro Preview
google/gemini-3.1-pro-preview
1/10
Latency
2.6s
Cost
$0.00611
Per 1,000
$6.11
81 in · 496 out (478 reasoning) · 6 words · checks 1/5
✕regex
✕regex
✕regex
✓regex
✕contains
SELECT DATE_TRUNC('month', occurred_at)::DATE AS month, COUNT
Judge: Output is incomplete and non-functional—missing the FROM clause, WHERE clause for 2025 filter, GROUP BY, ORDER BY, and the COUNT(DISTINCT user_id) expression is cut off.
Gemini 3.8 Flash
google/gemini-3.8-flash
9/10
Latency
724ms
Cost
$0.00053
Per 1,000
$0.53
81 in · 125 out · 31 words · checks 5/5
✓regex
✓regex
✓regex
✓regex
✓contains
```sql
SELECT
m.month,
COUNT(DISTINCT e.user_id) AS distinct_users
FROM
generate_series('2025-01-01'::date, '2025-12-01'::date, '1 month'::interval) AS m(month)
LEFT JOIN
events e ON date_trunc('month', e.occurred_at) = m.month
GROUP BY
m.month
ORDER BY
m.month ASC;
```
Judge: Query correctly uses date_trunc('month', occurred_at), COUNT(DISTINCT user_id), filters to 2025, groups and orders by month, and returns the first day of each month; the LEFT JOIN approach is valid and ensures all 12 months appear even with zero events, though a WHERE clause filter would be more con
Gemini 3.5 Flash Lite
google/gemini-3.5-flash-lite
10/10
top judge scorecheapest scoring 8+
Latency
504ms
Cost
$0.00024
Per 1,000
$0.24
81 in · 88 out · 29 words · checks 5/5
✓regex
✓regex
✓regex
✓regex
✓contains
```sql
SELECT DATE_TRUNC('month', occurred_at)::DATE AS month, COUNT(DISTINCT user_id) AS distinct_users FROM events WHERE occurred_at >= '2025-01-01' AND occurred_at < '2026-01-01' GROUP BY DATE_TRUNC('month', occurred_at) ORDER BY month ASC;
```
Judge: Query correctly uses date_trunc('month', occurred_at), COUNT(DISTINCT user_id), filters for 2025, groups and orders by month as required by the rubric.
Frequently asked
▸What does this prompt test?
SQL: Uses date_trunc('month', occurred_at), COUNT(DISTINCT user_id), a 2025 filter, grouped and ordered by month. The deterministic checks are regex, regex, regex, regex, contains.
▸Which model should I pick for this task?
If the judge's bar of 8/10 is good enough for you, Gemini 3.5 Flash Lite at $0.24 per 1,000 runs. If you need the top score, Gemini 3.5 Flash Lite at $0.24 per 1,000 runs.
If our calculators helped you cut down on hidden AI wallet leaks, thanks for using them. A tiny fraction of your savings is what keeps our pricing indexes updated daily.
Not sure which AI is cheapest for your use case? Find out in 30 seconds — no signup required.