Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Решите задачу с помощью только языка SQL  [new]
annushka12
Member

Откуда: Киев
Сообщений: 3
Имеется строка ‘aagftrhheteiiiiiooraaaapphhhyyfhdfhdfyyy’. В ней присутствуют группы повторяющихся символов (группа - это не единичный одинаковый символ в строке). Выведите информацию об этих группах в виде строк следующего содержания:

Позиция в строке Символ Количество в подстроке
20 мар 09, 14:33    [6954887]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
Elic
Member

Откуда:
Сообщений: 29988
Ну да, не дело блондинкам решать лабы
20 мар 09, 14:36    [6954909]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
annushka12
Member

Откуда: Киев
Сообщений: 3
а ты на фотку глянь - я ни блондинка вроде и далеко не студентка...
20 мар 09, 14:39    [6954941]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
Elic
Member

Откуда:
Сообщений: 29988
annushka12
а ты на фотку глянь - я ни блондинка вроде и далеко не студентка...
Это доказывает лишь, что поиском в интернете владешь :)
20 мар 09, 14:44    [6954983]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
annushka12
Имеется строка ‘aagftrhheteiiiiiooraaaapphhhyyfhdfhdfyyy’. В ней присутствуют группы повторяющихся символов (группа - это не единичный одинаковый символ в строке). Выведите информацию об этих группах в виде строк следующего содержания:

Позиция в строке Символ Количество в подстроке

SQL> select min(ord_num) pos,max(a_char) a_char, count(*) cnt
  2  from
  3    (select a_char,sum(start_of_group) over (order by ord_num) grp_id, ord_num
  4    from(
  5        select substr(str, level, 1) a_char, level ord_num, decode(substr(str, level, 1),substr(chr(7)||str, level, 1),null,1) start_of_group
  6          from (select 'aagftrhheteiiiiiooraaaapphhhyyfhdfhdfyyy’' str from dual)
  7        connect by level <= length(str)
  8      )s
  9  )
 10  group by grp_id
 11  having count(*) > 1
 12  order by grp_id
 13  ;
 
       POS A_CHAR        CNT
---------- ------ ----------
         1 a               2
         7 h               2
        12 i               5
        17 o               2
        20 a               4
        24 p               2
        26 h               3
        29 y               2
        38 y               3
 
9 rows selected
 
20 мар 09, 14:55    [6955083]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
annushka12,

select min(ord), letter, count(*)
from (
      select ord,
             letter,
             ord - row_number() over (partition by letter order by ord) id_gr
      from (
            select level ord, substr(s, level, 1) letter
            from (
                  select 'aagftrhheteiiiiiooraaaapphhhyyfhdfhdfyyy' s from dual
                 )
            connect by level <= length(s)
           )
      )
group by letter, id_gr
having count(*) > 1
order by 1
20 мар 09, 14:56    [6955087]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
annushka12
Member

Откуда: Киев
Сообщений: 3
Спасибочки огромное!!! СУПЕР!!!
20 мар 09, 15:05    [6955161]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
Elic
Member

Откуда:
Сообщений: 29988
with t as (select 'aagftrhheteiiiiiooraaaapphhhyyfhdfhdfyyy' s from dual)
--
select       regexp_instr (s, '(.)\1+', 1, level)        as pos,
      substr(regexp_substr(s, '(.)\1+', 1, level), 1, 1) as ch,
      length(regexp_substr(s, '(.)\1+', 1, level)      ) as len
  from t
  connect by regexp_substr(s, '(.)\1+', 1, level) is not null
;

20 мар 09, 15:07    [6955173]     Ответить | Цитировать Сообщить модератору
 Re: Решите задачу с помощью только языка SQL  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
Elic,

Красота!!!!
20 мар 09, 15:11    [6955206]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить