Структура таблицы:
create table test (a int, b float);
Вставленные значения:
insert into test values(1,7.07);
insert into test values(2,1.00);
insert into test values(3,4.81);
insert into test values(4,1.39);
insert into test values(5,1.60);
insert into test values(6,9.11);
insert into test values(7,6.99);
insert into test values(8,1.95);
insert into test values(9,1.00);
insert into test values(10,1.00);
insert into test values(11,1.62);
insert into test values(12,1.38);
insert into test values(13,1.33);
insert into test values(14,1.41);
insert into test values(15,3.67);
insert into test values(16,3.62);
insert into test values(17,2.43);
insert into test values(18,3.15);
insert into test values(19,57.30);
insert into test values(20,1.33);
insert into test values(21,1.68);
insert into test values(22,6.52);
insert into test values(23,2.75);
insert into test values(24,2.36);
insert into test values(25,2.01);
insert into test values(26,2.22);
insert into test values(27,5.35);
insert into test values(28,2.30);
insert into test values(29,1.05);
insert into test values(30,24.21);
SQL-запрос:
set @groupvalue := 0;
set @comparevalue := null;
select groupingvalue, max(value), count(value)
from
(
select if(@comparevalue=floor(b),@groupvalue,@groupvalue := @groupvalue + 1 )
groupingvalue,
@comparevalue := floor(b) as value
from test t
) a
group by groupingvalue
Объяснение:
- Создать то же групповое значение, если последовательное значение сравнения совпадает с другим
разумно увеличить групповую стоимость.
- Теперь создана другая группировка, поэтому мы можем легко вычислить
номер вхождения.