Я хотел бы ранжировать строки на основе их ранней даты. Однако, если родной брат (строка в той же группе) имеет более высокий рейтинг, это повлияет на их ранжирование.MySQL: используйте раннюю дату группы, чтобы определить ранг каждой строки.
id | group | date
1 11 2016-12-1
2 11 2016-01-1
3 22 2016-02-1
4 22 2016-05-1
5 3 2016-04-1
6 3 2016-06-1
В настоящее время:
SELECT *, @curRank := @curRank + 1 AS rank
FROM table
SELECT @curRank := 0) r
ORDER BY date ASC
id | group | date | rank
2 11 2016-01-1 1
3 22 2016-02-1 2
5 3 2016-04-1 3
4 22 2016-05-1 4
6 3 2016-06-1 5
1 11 2016-12-1 6
Мне нужно достичь
id | group | date | rank
2 11 2016-01-1 1
1 11 2016-12-1 6
3 22 2016-02-1 2
4 22 2016-05-1 4
5 3 2016-04-1 3
6 3 2016-06-1 5
Я думаю, что вы хотите/должны принять 2 прохода в этом. Первый проход принимает самую низкую дату для каждой группы и ранжирует ее, а затем повторно оценивает в соответствии с порядком ранга для группы, а затем даты. – xQbert
Группы могут иметь несколько братьев и сестер, поэтому я не уверен, как это сделать, если это будет работать для 3-го, 4-го ... элементов в группе. – Kris