выбрать повторяющиеся последовательности в рамках 1й группы
От: Аноним  
Дата: 17.08.09 11:02
Оценка: 6 (1)
Например есть таблица следюущего вида :

ИД1   ИД2   ДАННЫЕ

1     1       1
1     1       2
1     1       4
1     2       2
1     2       1
1     2       2
1     2       3
3     1       1
3     1       5
3     1       2
3     1       4
3     1       1


Ключом является пара колонок ИД1 и ИД2, нужно найти пересечения множеств значений в рамках одного уникального значения ключа

То есть из таблицы получается три множества

a) 1,2,4 ( ИД1 = 1, ИД2 = 1 )
б) 2,1,2,3 ( ИД1 = 1, ИД2 = 2 )
в) 1,5,2,4,1 ( ИД1 = 3, ИД2 = 1 )

Нужно их сравнить и вычислить пересечение, получим 3 множества, из них 2 одинаковы

1) а П б — 2,1
2) а П в — 1,2,4
3) б П в — 2,1

И далее необходимо сгрупирровать и посчитать одинаковые множества , т.е. в нашем случае результирующей таблицей будет

ИД    ЭЛЕМЕНТ    КОЛВО

1       2         2
1       1         2
2       1         1
2       2         1
2       4         1


Можно ли этот алгоритм реализовать в виде SQL запроса ?
Re: выбрать повторяющиеся последовательности в рамках 1й гру
От: naf_2000  
Дата: 18.08.09 09:25
Оценка:
Вот с этого момента не понятно:

А>

А>И далее необходимо сгрупирровать и посчитать одинаковые множества , т.е. в нашем случае результирующей таблицей будет

А>
А>ИД    ЭЛЕМЕНТ    КОЛВО

А>1       2         2
А>1       1         2
А>2       1         1
А>2       2         1
А>2       4         1
А>

То есть более наглядно опишите как получается результирующая таблица и что есть ее поля
Re[2]: выбрать повторяющиеся последовательности в рамках 1й
От: Аноним  
Дата: 18.08.09 15:21
Оценка:
Здравствуйте, naf_2000, Вы писали:

_>Вот с этого момента не понятно:


А>>

А>>И далее необходимо сгрупирровать и посчитать одинаковые множества , т.е. в нашем случае результирующей таблицей будет

А>>
А>>ИД    ЭЛЕМЕНТ    КОЛВО

А>>1       2         2
А>>1       1         2
А>>2       1         1
А>>2       2         1
А>>2       4         1
А>>

_>То есть более наглядно опишите как получается результирующая таблица и что есть ее поля

Результирующая таблица это представление полученных множеств из первого поста, цитирую :

1) а П б — 2,1
2) а П в — 1,2,4
3) б П в — 2,1


Видим что два одинаковых множества 2,1 — их считаем за одно множество, но в колве 2 шт.

Получаем в результате 2 множества

1. 2,1 ( 2шт )
2. 1,2,4 ( 1 шт )

Теперь представляем это в виде таблицы, где ИД — номер множества , ЭЛЕМЕНТ — значение множества а КОЛВО — количество множеств. Получим результирующую таблицу

ИД    ЭЛЕМЕНТ    КОЛВО

1       2         2
1       1         2
2       1         1
2       2         1
2       4         1
Re[3]: выбрать повторяющиеся последовательности в рамках 1й
От: naf_2000  
Дата: 19.08.09 11:13
Оценка:
Да, не все так просто
Пока заткунулся на подзадаче к вашей задаче:
Есть таблица из двух полей K,V
Пара (K,V) уникальна в каждой записи
Набором назовем подмножество всех записей таблицы, имеющих одинаковое значение K.
Два набора равны, если все значения V первого набора содержатся во втором и наоборот.
Семейства наборов — множества всех равных наборов.

Например, для таблицы
K V
1 1
1 2

2 1
2 2

2 3
3 1

3 2

имеется два семейства наборов:
1. состоящее из наборов: (1,1),(1,2) и (3,1),(3,2)
2. из набора (2,1),(2,2),(2,3)
Требуется написать запрос, выдающий выборку из двух полей:
1. различные значения V в каждом семействе
2. количество наборов в семействе
Для данной таблицы:

1 2
2 2

1 1
2 1

3 1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.