powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / составить запрос с группировкой - бьюсь 3 дня
6 сообщений из 6, страница 1 из 1
составить запрос с группировкой - бьюсь 3 дня
    #39547132
dcdba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, коллеги.

Начинаю подозревать, что задача не решаема на чистом SQL.
Но возможно, я плохо знаю все возможности аналитических функций Oracle.

Имею таблицу MYTABLE, в которой, если отсортировать по BLOCK_ID, поля TYPE нужно сгруппировать. Т.е. сгруппировать именно на тех участках, где одинаковые значения поля TYPE идут подряд
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
  TYPE   BLOCK_ID     BLOCKS
  ---- ---------- ----------
< free          1         10
/ tble         11         10
| tble         21         10
\ tble         31         10
/ free         41         10
\ free         51         10



Хочу сгруппировать примерно так

select TYPE, MIN(BLOCK_ID), SUM(BLOCKS)
… какая-то аналитическая функция ORDER BY BLOCK_ID ? …
from MYTABLE;

Заранее большое спасибо, если вдруг кто-то знает, как это сделать.
...
Рейтинг: 0 / 0
составить запрос с группировкой - бьюсь 3 дня
    #39547133
dcdba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. результат должен поучиться такой:

Код: sql
1.
2.
3.
4.
5.
TYPE    MIN(BLOCK_ID)      SUM(BLOCKS)
----    -------------      -----------
free                1               10
tble               11               30
free               41               20
...
Рейтинг: 0 / 0
составить запрос с группировкой - бьюсь 3 дня
    #39547134
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск по форуму по ключевым словам start_of_group.
...
Рейтинг: 0 / 0
составить запрос с группировкой - бьюсь 3 дня
    #39547140
dcdba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadПоиск по форуму по ключевым словам start_of_group.
Спасибо! Фантастика..
...
Рейтинг: 0 / 0
составить запрос с группировкой - бьюсь 3 дня
    #39547148
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Куча подзапросов, но результат получен....

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 with st as (select 'free' as typ, 1 as block_id, 10 as blocks from dual union all 
            select 'tble' as typ, 11 as block_id, 10 as blocks from dual union all 
            select 'tble' as typ, 21 as block_id, 10 as blocks from dual union all 
            select 'tble' as typ, 31 as block_id, 10 as blocks from dual union all
            select 'free' as typ, 41 as block_id, 10 as blocks from dual union all 
            select 'free' as typ, 51 as block_id, 10 as blocks from dual) 
select grp as ord,typ,min(block_id) as mn_block_id,sum(blocks) as sm_block     
  from (select typ,block_id,blocks,sum(chg) over (order by block_id) as grp     
          from (select typ,block_id,blocks,case when typ = lag(typ) over (order by block_id) then 0 else 1 end as chg 
                  from st))
 group by grp,typ                  
 order by ord 
...
Рейтинг: 0 / 0
составить запрос с группировкой - бьюсь 3 дня
    #39547182
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny2,

Вариант Доброго-Еха на один подзапрос меньше

.....
stax
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / составить запрос с группировкой - бьюсь 3 дня
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]