Найти строку в таблице | |
---|---|
alexzima Сообщений: 147 Дата регистрации: 10.07.2006 |
Всем привет!
Задача: есть таблица table1. В ней 14 полей все имеют тип Logical. В данной таблице 5000 записей. Нужно найти запись с наибольшим значением на Да/Нет из всех возможных комбинаций, неважно Ложь это или Истина. ![]() |
Re: Найти строку в таблице | |
---|---|
Владимир Максимов Сообщений: 14063 Откуда: Москва Дата регистрации: 02.09.2000 |
Как определяется это самое "значение", чтобы потом среди них отобрать "наибольшее"? Обычно считают, что "Да" = 1, а "Нет" = 0. Соответственно, и "значение" - это сумма чисел, определенных из всех 14 полей. Но у Вас фраза построена таким образом, что непонятно, каким образом это самое "значение" рассчитывается Исправлено 1 раз(а). Последнее : Владимир Максимов, 24.11.22 10:53 ![]() |
Re: Найти строку в таблице | |
---|---|
alexzima Сообщений: 147 Дата регистрации: 10.07.2006 |
Каждая строка это комбинация 1 или 0 в любой последовательности. Она может быть
00000000110011 и 11100010011100, т. е. любой из возможных из 1 и 0. Найти нужно строку, которая имеет самое большое кол-во комбинаций из 1 и 0, неважно 0 это или 1. ![]() |
Re: Найти строку в таблице | |
---|---|
Владимир Максимов Сообщений: 14063 Откуда: Москва Дата регистрации: 02.09.2000 |
Другими словами, вопрос в том, как определить количество уникальных комбинаций для фиксированного количества нулей и единиц?
Я бы решал задачу "в лоб" 14 единиц - это десятичное число 16 383. Делаем табличку на все эти значения (начиная со значения 0) с полями: число, количество единиц в двоичном представлении этого числа Дальше остается просто подсчитать количество строк в этой таблице для одинакового количества единиц. Можно из этой выборки еще одну табличку сделать. Собственно, все. По Вашей таблице для каждой строки определяется количество единиц, смотрите, сколько чисел можно записать этим количеством единиц для 14 бит и дальше определяется max/min. Для простоты, я бы сделал дополнительное поле в Вашей таблице, где сразу записывал количество комбинаций для записи. И выборку по этому полю. ![]() |
Re: Найти строку в таблице | |
---|---|
alexzima Сообщений: 147 Дата регистрации: 10.07.2006 |
Будет ли это справедливо если
00011100000000 не равно 10010000000001? Т. е. в первой строке три 1 и во второй три 1, но это разные варианты. ![]() |
Re: Найти строку в таблице | |
---|---|
Владимир Максимов Сообщений: 14063 Откуда: Москва Дата регистрации: 02.09.2000 |
Вам лучше знать. Я Вас и спрашивал про критерии подсчета. Что именно Вы вкладываете в понятие "уникальная комбинация"? Как именно эта самая "комбинация" формируется? Из приведенного примера непонятно, в чем проблема? Ну да, в обоих случаях по три единицы. Т.е. количество комбинаций будет одинаково. И в чем проблема? Их надо как-то по разному считать? Как? ![]() |
Re: Найти строку в таблице | |
---|---|
alexzima Сообщений: 147 Дата регистрации: 10.07.2006 |
Ок. Спасибо, Владимир!
Вопрос закрыт. ![]() |
Re: Найти строку в таблице | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Цитата:Смешная постановка задачи ![]() 1) строка - это одна комбинация 2) найти строку, имеющую самое большое количество комбинаций. ![]() |
Re: Найти строку в таблице | |
---|---|
alexzima Сообщений: 147 Дата регистрации: 10.07.2006 |
Строк (записей) в файле 5000
Имелось ввиду найти строку из 5000 ![]() |
Re: Найти строку в таблице | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Я не о количестве строк таблицы, а о том, как строка, представляющая собой одну комбинацию, может одновременно иметь какое-то другое - большее или меньшее - количество комбинаций. Ведь найти надо строку, имеющую самое большое количество комбинаций.
Но согласно пункту 1, строка - это одна комбинация, то есть все 5000 строк имеют ровно одну комбинацию. Так что ответ очевиден - любая строка имеет самое большое количество комбинаций в количестве одна. ![]() ![]() |
Re: Найти строку в таблице | |
---|---|
of63 Сообщений: 24629 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> Нужно найти запись с наибольшим значением
значением какого-то поля по фильтром (GROUP в логичиском поле). мтк ТС не совсем Прост ) ![]() |
Re: Найти строку в таблице | |
---|---|
akvvohinc Сообщений: 4001 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Вероятнее всего, собственно порядок нулей и единиц в записи значения не имеет - важно лишь их количество. А под комбинацией ТС понимает порядок этого количества нулей и единиц в пронумерованных от 1 до 14 полях записи. Скажем, если в 13 полях записи находятся 0, а в 1 поле - 1, то эта запись может иметь 14 возможных (уникальных) комбинаций: 10000000000000 01000000000000 00100000000000 ... 00000000000001 Если же в в 12 полях записи находятся 0, а в 2 полях - 1, то эта запись будет иметь гораздо больше возможных (уникальных) комбинаций (91). И так далее. Понятно, что максимальное количество таких комбинаций получится при 7 нулях и 7 единицах (3432, если я не ошибся). То есть это не что иное, как количество сочетаний из 14 по X (где X - число от 0 до 14). Соответственно, и результат вычисляется по известной формуле для числа сочетаний. Но это лишь мои догадки, в чём суть данного задания. ![]() Исправлено 3 раз(а). Последнее : akvvohinc, 25.11.22 20:54 ![]() |
Re: Найти строку в таблице | |
---|---|
of63 Сообщений: 24629 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
[quote alexzima]Всем привет!
Задача: есть таблица table1. В ней 14 полей все имеют тип Logical. В данной таблице 5000 записей. Нужно найти запись с наибольшим значением на Да/Нет из всех возможных комбинаций, неважно Ложь это или Истина.[/quote] Нужно найти запись с наибольшим значением на Да/Нет из всех возможных комбинаций, неважно Ложь это или Истина.[/quote] Задача не очень "физичная" "" - , неважно Ложь это или Истина. это прибавляет ********а се имеют тип Logical. ужно найти запись с наибольшим значением Исправлено 1 раз(а). Последнее : of63, 25.11.22 20:38 ![]() |
Re: Найти строку в таблице | |
---|---|
sphinx Автор Сообщений: 30760 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Есть еще ISBLANK()
![]() ------------------ "Veni, vidi, vici!"(с) ![]() |
© 2000-2023 Fox Club  |