Найч
Алгоритмик :-)
задачка на сообразительность
Есть таблица
[sql]
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`type` tinyint(4) default '0',
PRIMARY KEY (`id`)
);
[/sql]
с таким набором данных
где type, предположим, имеет несколько возможных значений. Для простоты скажем что только два: 2 и 3.
Задача - выбрать минимальное количество строк, отсортированных по id начиная с 1, в которых есть три строки с type=3. Т.е. по достижении 10й строки количество троек становится равным 3 и это и есть правильный ответ.
Ваши предложения как это сделать средствами мускула? Считаем, что числа в поле type расположены случайным образом и никакой зависимости между ними нет. Вариант с курсором + временная таблица не рассматриваем
Тестовые данные
[sql]
insert into test (type) values (2),(2),(3),(2),(2),(2),(3),(2),(2),(3),(2),(2),(2),(2),(3),(2),(2),(2),(3),(2),(2),(2),(3),(2),(2),(2),(3),(2),(2),(2),(2),(3),(2),(2),(2),(2),(2),(2),(3),(2),(2),(2),(2),(2),(3),(3),(2);
[/sql]
Есть таблица
[sql]
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`type` tinyint(4) default '0',
PRIMARY KEY (`id`)
);
[/sql]
с таким набором данных
Код:
mysql> select * from test;
+----+------+
| id | type |
+----+------+
| 1 | 2 |
| 2 | 2 |
| 3 | 3 |
| 4 | 2 |
| 5 | 2 |
| 6 | 2 |
| 7 | 3 |
| 8 | 2 |
| 9 | 2 |
| 10 | 3 |
| 11 | 2 |
| 12 | 2 |
| 13 | 2 |
| 14 | 2 |
| 15 | 3 |
| 16 | 2 |
| 17 | 2 |
| 18 | 2 |
| 19 | 3 |
| 20 | 2 |
| 21 | 2 |
| 22 | 2 |
| 23 | 3 |
................
Задача - выбрать минимальное количество строк, отсортированных по id начиная с 1, в которых есть три строки с type=3. Т.е. по достижении 10й строки количество троек становится равным 3 и это и есть правильный ответ.
Код:
mysql> select * from test;
+----+------+
| id | type |
+----+------+
| 1 | 2 |
| 2 | 2 |
| 3 | 3 |
| 4 | 2 |
| 5 | 2 |
| 6 | 2 |
| 7 | 3 |
| 8 | 2 |
| 9 | 2 |
| 10 | 3 |
Тестовые данные
[sql]
insert into test (type) values (2),(2),(3),(2),(2),(2),(3),(2),(2),(3),(2),(2),(2),(2),(3),(2),(2),(2),(3),(2),(2),(2),(3),(2),(2),(2),(3),(2),(2),(2),(2),(3),(2),(2),(2),(2),(2),(2),(3),(2),(2),(2),(2),(2),(3),(3),(2);
[/sql]