Страница 1 из 1
А пробовал кто-нибудь сократить размер выборки?
Добавлено: 23 сен 2009, 10:01
PAleN
Можно ли как-то из выборки, упорядоченной
по полям Цех, Пол, ФИО
оставить по N случайных записей из каждой группы?
Т.е. к примеру по 5 мужчин и женщин из каждого цеха.
Ограничение: новых таблиц создавать нельзя - прав не хватает.
Re: А пробовал кто-нибудь сократить размер выборки?
Добавлено: 24 сен 2009, 16:42
Игорь Акопян
мысли:
таблица сотрудников не может быть очень большой, следовательно не вижу смысла заморачиваться на минимизацию трафика.
Отсюда вывод - решаем саму задачу на клиенте.
Re: А пробовал кто-нибудь сократить размер выборки?
Добавлено: 25 сен 2009, 08:45
PAleN
Беда в том, что список сотрудников - это чисто для примера как общий случай. Конкретно - есть список абонентов довольно крупной сети (область) и периодическая нужда выбирать по несколько душ по каждому району, населенному пункту, улице. На клиенте это реализовано, но можно ли это сделать средствами чисто SQL?
Re: А пробовал кто-нибудь сократить размер выборки?
Добавлено: 30 сен 2009, 10:54
Laba
Написать одним запросом можно, но не для всех СУБД.
Делается это так:
подзапрос 1
1. получаешь количество строк в таблице сотрудников
подзапрос 2
2. создаёшь выборку из 5x2=10 строк (либо с помощью новой таблицы, либо какую-нибудь существующую используешь)
3. делаешь выборку с номерами складов (либо из таблицы сотрудников, либо, что лучше, используешь справочник складов)
4. перемножаешь выборку складов с выборкой из 10 строк, для каждой строки разыгрываешь номер строки в таблице сотрудников (верхний предел знаем см п.1)
5 строк будут для мужчин, а 5 для девушек
подзапрос 4
5. получаем пронумерованную выборку сотрудников (каждая строка имеет свой номер, не id!!!)
получаем результат
6. соединяем подзапрос 4 и 2 по номеру склада, номеру строки и полу
Как пронумеровать выборку, разыграть значения и соединить запросы зависит от конкретной СУБД.
Re: А пробовал кто-нибудь сократить размер выборки?
Добавлено: 05 окт 2009, 09:01
PAleN
Спасибо, направление мысли понятно