Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 19

Поиск наиболее часто встречающегося подмножества с помощью Select

10.05.2012, 19:46. Показов 2072. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица вида:
id letter
1 a
1 b
1 c
2 a
2 b
2 c
3 a
3 c
Задача - выделить среди множеств abc, abc,ac(т е буквы принадлежащие id с одним и тем же значением)
наиболее часто встречающееся подмножество(Здесь -ac) Вторые сутки бьюсь и никаких идей....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.05.2012, 19:46
Ответы с готовыми решениями:

Организовать поиск наиболее часто встречающегося мужского и женского имени
Генеалогическое дерево некоторого рода представлено графом не более 14 вершин. Узел каждой вершины графа дополнительно включает имя...

Удаление из массива наиболее часто встречающегося значения
Задание заключается в "Удаление из массива наиболее часто встречающегося значения. Если таких значений несколько, то выбрать любое из них....

Удаление из массива наиболее часто встречающегося значения
Возникла проблема, в информатике шарю очень мало, что очень обидно, а разобраться хочется. Нашёл задание: "Удалить из массива...

3
43 / 43 / 0
Регистрация: 04.05.2012
Сообщений: 205
11.05.2012, 11:38
Посмотрите может поможет.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
declare @table  table(id int,letter char(1))
insert into @table (id ,letter)
select id ,letter
from
(
select 1 as id,'a' as letter
union
select 1,'b'
union
select 1,'c'
union
select 2,'a'
union
select 2,'b'
union
select 2,'c'
union
select 3,'a'
union
select 3,'c'
 
) as t
select count(t.l1+t.l2),(t.l1+t.l2)
from
(
select t.id,t.letter as l1,t1.letter as l2 
from @table as t  join @table as t1 on t.id=t1.id and not t.letter=t1.letter
where not t.letter=t1.letter
) as t
group by (t.l1+t.l2)
0
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 19
12.05.2012, 01:10  [ТС]
Неа, не пашет, ну точней ac то оно выбирает, но если например преобразовать таблицу к виду
1 a
1 b
1 c
2 a
2 b
2 c
3 a
3 b
3 c
и верным ответом будет abc, то ваш запрос выдает просто ab
0
43 / 43 / 0
Регистрация: 04.05.2012
Сообщений: 205
12.05.2012, 13:42
Может не оптимально.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
declare @table  table(id int,letter char(1))
declare @table1  table(l1 varchar(10))
declare @table2  table(id int,l1 varchar(10))
declare @result  table(comb varchar(10), qty int)
declare @id int
DECLARE @var varchar(8000)--комбинации letter
insert into @table (id ,letter)
select id ,letter
from
(
select 1 as id,'a' as letter union select 1,'b' union select 1,'c' /*union select 2,'a'*/ union select 2,'b' union select 2,'c' union select 3,'a' union select 3,'b' union select 3,'c'
) as t
select *
from @table
--цикл по id
set @id=1
while exists (select distinct id from @table where id=@id)
begin
    --добавляем комбинацию letter для очередного id
    insert into @table1 (l1)
    select letter
    from
    (
    select  letter
    from @table where id=@id
    ) as t 
--  select *
--  from @table1
    SET @var = ''
    SELECT @var = @var + l1 FROM @table1 
--  SELECT @var
    insert into @table2 (id,l1)
    values( @id,@var)
    set @id=@id+1
    delete @table1
end
    select *
    from @table2
 
 
declare @q as int
declare @p as varchar(10)
declare @p1 as varchar(10)
set @p=(select top 1 l1 from @table2 order by len(l1) desc )
select @p
set @q=len(@p)+1
--проходим @p в прямом порядке
while @q>0
begin
    set @p1='%'+isnull(stuff(@p,@q,1,'%'),@p)+'%'
insert into @result (comb, qty )
select @p1, count(patindex(@p1,l1)) as qty from @table2
where patindex(@p1,l1)>0
set @q=@q-1
end
 
select * from @result
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2012, 13:42
Помогаю со студенческими работами здесь

Найти в массиве и вывести значение наиболее часто встречающегося элемента.
ПАцаны помогите, попадаю... отблагадарю... 1. Найти в массиве и вывести значение наиболее часто встре* чающегося элемента.

Найти в массиве и вывести значение наиболее часто встречающегося элемента
Никогда не изучали ассемблер, а тут задали лабы написать: 1.Переписать в выходную строку слова из входной строки в порядке возрастания их...

Найти в массиве и вывести значение наиболее часто встречающегося элемента
Здравствуйте вы мне можете помочь? вот условие задачи, её надо сделать на С.... заранее благоларю... 1. Найти в массиве и вывести...

Поиск часто встречающегося слова
Здравствуйте. Нужно написать программу которая находит наиболее часто встречающееся слово в заданном предложении. Если я правильно понял...

Поиск часто встречающегося элемента в выделенном диапазоне
Здравствуйте. Необходимо найти в выделенном диапазоне самое часто встречаемое числовое значение, вывести его и вывести кол-во повторений ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru