MIN(BSO) Работает не так как надо. Выводит всё также, как и в случае просто BSO. Тут дело может быть в Group By?
Насчет еффективности ничего не могу сказать... Может у вас есть апробированный алгоритм по типу этого только не derived с запросами?
Я сам тоже попытаюсь через хранимую процедуру всё сделать.