====== Считать номера полей по группе ======
Пример таблицы
CREATE TABLE Table1 (`id` int, `crew_id` int, `amount` int, `type` varchar(3));
INSERT INTO Table1 (`id`, `crew_id`, `amount`, `type`)
VALUES
(1, 4, 1000, 'AUB'),
(2, 4, 1500, 'AUB'),
(3, 5, 8000, 'CA'),
(4, 4, 1000, 'CA'),
(5, 5, 1000, 'AUB'),
(6, 6, 3000, 'AUB'),
(7, 4, 2000, 'CA'),
(8, 6, 3500, 'AUB'),
(9, 4, 5000, 'AUB'),
(10, 5, 9000, 'CA'),
(11, 5, 1000, 'CA');
Вывод данных с счётом по колонке `type`
SELECT
id,
crew_id,
amount,
`type`,
(CASE `type`
WHEN @curType -- если тип совпадает
THEN @curRow := @curRow + 1 -- тогда увеличиваем счётчик
ELSE @curRow := 1 AND @curType := `type` END -- Если нет, то curType=новый_тип, и сбрасываем счётчик
) + 1 AS rank
FROM
Table1 p, -- Таблица с данными
(SELECT @curRow := 0, @curType := '') r -- Delivered переменные счётчик и тип для rank
ORDER BY type desc;
Результат будет
^ id ^ crew_id ^ amount ^ type ^ rank ^
| 11 | 5 | 1000 |CA | 1 |
| 10 | 5 | 9000 |CA | 2 |
| 3 | 5 |8000 | CA | 3 |
| 4 | 4 |1000 | CA | 4 |
| 7 | 4 | 2000 | CA | 5 |
| 9 | 4 |5000 | AUB | 1 |
| 8 | 6 |3500 | AUB | 2 |
| 6 | 6 |3000 | AUB | 3 |
| 5 | 5 |1000 | AUB | 4 |
| 2 | 4 |1500 | AUB | 5 |
| 1 | 4 |1000 | AUB | 6 |