Ну, это заняло немного возни, но вот оно!
Предполагается, что в вашей таблице есть столбец id
, который вы заказываете для получения согласованного порядка (если у вас нет столбца id
, порядка по метке времени или чего-либо еще во внутреннем запросе).
set @prev := '', @low := 0, @cnt := 0, @grp :=0;
select cnt, column1, low
from (
select
column2,
@low := if(@prev = column1, least(column2, @low), column2) low,
@cnt := if(@prev = column1, @cnt + 1, 1) cnt,
@grp := if(@prev = column1, @grp, @grp + 1) grp,
@prev := column1 column1
from (select column1, column2 from so9091342 order by id) x
order by grp, cnt desc) y
group by grp;
Вот sql, необходимый для настройки таблицы для тестирования:
create table so9091342 (id int primary key auto_increment, column1 int, column2 int);
insert into so9091342 (column1, column2) values (124,12),(124,11),(124,10),(124,9),(26,8),(65,7),(65,6),(65,5),(65,4),(23,3),(124,2),(124,1),(124,0);
Вывод вышеуказанного запроса:
+------+---------+------+
| cnt | column1 | low |
+------+---------+------+
| 4 | 124 | 9 |
| 1 | 26 | 8 |
| 4 | 65 | 4 |
| 1 | 23 | 3 |
| 3 | 124 | 0 |
+------+---------+------+
p.s. Я назвал таблицу so9091342, потому что это так ID вопроса # 9091342.