I am trying to only generate row numbers for five rows of a given group_id:
group_id | row_counter | other_columns
---------+-------------+--------------
111      | 1           | ...
111      | 2           | ...
111      | 3           | ...
111      | 4           | ...
111      | 5           | ...
111      | 6           | ...
111      | 6           | ...
111      | 6           | ...
111      | 6           | ...
222      | 1           | ...
222      | 2           | ...
222      | 3           | ...
222      | 4           | ...
333      | 1           | ...
333      | 2           | ...
I can't figure out how to reset the counter when the group changes:
  SELECT @group_number := `group_id`,
         CASE
           WHEN (`group_id` = @group_number AND @row_number < 6)
             THEN @row_number := @row_number + 1
           WHEN (`group_id` = @group_number AND @row_number = 6)
             THEN @row_number := 6
           ELSE @row_number := 1
         END AS `row_number`
  FROM   (SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 111 AS `group_id`
          UNION ALL 
          SELECT 222 AS `group_id`
          UNION ALL 
          SELECT 222 AS `group_id`
          UNION ALL 
          SELECT 222 AS `group_id`
          UNION ALL 
          SELECT 222 AS `group_id`
          UNION ALL 
          SELECT 333 AS `group_id`
          UNION ALL 
          SELECT 333 AS `group_id`) `m`
         CROSS JOIN (SELECT @row_number := 0, @group_number := 0) AS `n`
Produces
| group_id | row_number | 
|---|---|
| 111 | 1 | 
| 111 | 2 | 
| 111 | 3 | 
| 111 | 4 | 
| 111 | 5 | 
| 111 | 6 | 
| 111 | 6 | 
| 111 | 6 | 
| 111 | 6 | 
| 222 | 6 | 
| 222 | 6 | 
| 222 | 6 | 
| 222 | 6 | 
| 333 | 6 | 
| 333 | 6 | 
 
    