Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Групировать срочки используя partition / 25 сообщений из 33, страница 1 из 2
02.04.2018, 17:03
    #39624276
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
Добрый день, подскажите как построить запрос, пишут вот:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
       with a as (select t.tab_num, t.last_name || ' ' || t.first_name || ' ' || t.second_name as staff, t.address as location, t.date_place
                    from mobile_employees t
                   where t.tab_num = '0000001095')
         select a.staff,
                a.location,
                first_value(date_place) over(partition by location order by date_place) as min_date,
                last_value(date_place) over(partition by location order by date_place) as max_date
           from a
          order by date_place



надо
чтобы стало как на скрин шоте
адрес г. Москва, р-н Измайлово, пл. Измайловская, 11 | дата/время 06.03.2018 8:21:42 по 06.03.2018 8:40:33
адрес Последнее известное: г. Москва, р-н Тверской, бульв. Цветной, 11С3 | дата/время 06.03.2018 11:20:41 по 06.03.2018 12:21:30
...
Рейтинг: 0 / 0
02.04.2018, 17:09
    #39624285
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbom,
GROUP BY уменьшает количество строк
...
Рейтинг: 0 / 0
02.04.2018, 18:24
    #39624312
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
XMLerGROUP BY уменьшает количество строкможет и увеличивать.
...
Рейтинг: 0 / 0
03.04.2018, 07:21
    #39624434
Alexander_Ttl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
-2-XMLerGROUP BY уменьшает количество строкможет и увеличивать.Это как? Поясни.

bombimbom, вместо оконных функций, max и group by помогут.
...
Рейтинг: 0 / 0
03.04.2018, 07:34
    #39624442
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
Alexander_Ttl-2-пропущено...
может и увеличивать.Это как? Поясни.RTFM SQL for Aggregation in Data Warehouses (FAQ)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> select max(dummy), count(*) from dual group by cube(1, 1, 1, 1);

M   COUNT(*)
- ----------
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1
X          1

16 rows selected.

...
Рейтинг: 0 / 0
03.04.2018, 08:01
    #39624452
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
XMLer,

Вообще аналитические функции группируют, тут не нужен group by
...
Рейтинг: 0 / 0
03.04.2018, 08:17
    #39624458
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbomXMLer,

Вообще аналитические функции группируют, тут не нужен group by
Именно group by тебе и нужен, если ты хочешь убрать "лишние" строки.
...
Рейтинг: 0 / 0
03.04.2018, 08:39
    #39624460
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbomВообще аналитические функции группируютЧудак, не надо упорствовать в невежестве.
...
Рейтинг: 0 / 0
03.04.2018, 09:20
    #39624473
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
Dshedoo, а чего не distinct тогда? :)
...
Рейтинг: 0 / 0
03.04.2018, 10:17
    #39624503
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbomDshedoo, а чего не distinct тогда? :)
Можно, только если переписать last_value так, чтобы значение возвращалось одно и то же, но дистинкт - это крайне прожорливая штука, лучше использовать аналитику.

Код: plsql
1.
last_value(date_place) over(partition by location order by date_place ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as max_date
...
Рейтинг: 0 / 0
03.04.2018, 10:35
    #39624512
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
Dshedoo,
а Rows between это диапазон для окна?
...
Рейтинг: 0 / 0
03.04.2018, 10:37
    #39624515
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
Alexander_Ttl-2-пропущено...
может и увеличивать.Это как? Поясни.


у group by кляузы есть расширения для промежуточных итогов
...
Рейтинг: 0 / 0
03.04.2018, 10:38
    #39624517
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbomDshedoo,
а Rows between это диапазон для окна?
Отвечу как специалист: я понятия не имею что это, но это решает поставленную задачу.
Можете загуглить.
...
Рейтинг: 0 / 0
03.04.2018, 10:40
    #39624518
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbom,

получается круто! ну почти! вот исходные данные
...
Рейтинг: 0 / 0
03.04.2018, 10:40
    #39624521
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbom,

мы пропускаем то что там в зеленом квадратике
...
Рейтинг: 0 / 0
03.04.2018, 10:47
    #39624536
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbomDshedoo,
а Rows between это диапазон для окна?
Тебя тролят, пример с rows between UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING это как если бы тебя идиотом назвали.
...
Рейтинг: 0 / 0
03.04.2018, 10:48
    #39624538
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
Вы бы данные предоставили с кляузой with + ваш запрос, глядишь люди бы и потянулись.
...
Рейтинг: 0 / 0
03.04.2018, 10:52
    #39624543
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
XMLer,

ясно, подтверждает что на наших форумах понтарезы сидят, лучше полазить за рубежом :)
...
Рейтинг: 0 / 0
03.04.2018, 10:58
    #39624552
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
K790Вы бы данные предоставили с кляузой with + ваш запрос, глядишь люди бы и потянулись.Ты что?! В таком случае есть возможность закрыть тему в два-три ответа. А так, видишь, люди вдоволь пообщаться могут.
...
Рейтинг: 0 / 0
03.04.2018, 10:58
    #39624553
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbomXMLer,

ясно, подтверждает что на наших форумах понтарезы сидят, лучше полазить за рубежом :)
Вся прелесть в том, что это он тебя троллит на самом деле.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
       with a as (select t.tab_num, t.last_name || ' ' || t.first_name || ' ' || t.second_name as staff, t.address as location, t.date_place
                    from mobile_employees t
                   where t.tab_num = '0000001095')
         select distinct 
                a.staff,
                a.location,
                first_value(date_place) over(partition by location order by date_place ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as min_date,
                last_value(date_place) over(partition by location order by date_place ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as max_date
           from a
          order by date_place



или

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with a as (select t.tab_num, t.last_name || ' ' || t.first_name || ' ' || t.second_name as staff, t.address as location, t.date_place
                    from mobile_employees t
                   where t.tab_num = '0000001095')
         select a.staff,
                a.location,
                min(date_place) as min_date,
                max(date_place) as max_date
           from a
          group by a.staff, a.location,
          order by date_place
...
Рейтинг: 0 / 0
03.04.2018, 11:01
    #39624557
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
AmKadK790Вы бы данные предоставили с кляузой with + ваш запрос, глядишь люди бы и потянулись.Ты что?! В таком случае есть возможность закрыть тему в два-три ответа. А так, видишь, люди вдоволь пообщаться могут.
Во всем нужно видеть что-то хорошее. Автор топика неисправим, но некий Александр узнал что-то новое для себя.
...
Рейтинг: 0 / 0
03.04.2018, 11:02
    #39624559
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbomлучше полазить за рубежомЗдесь дебилом меньше только будет.
...
Рейтинг: 0 / 0
03.04.2018, 11:42
    #39624620
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbom ясно, подтверждает что на наших форумах понтарезы сидят, лучше полазить за рубежом :)

сильное заявление.
...
Рейтинг: 0 / 0
03.04.2018, 11:45
    #39624624
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
bombimbombombimbom,

мы пропускаем то что там в зеленом квадратике


Судя по зеленому квадратику, гляньте на решение под кодом start_of_groups

Код: plsql
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.
SQL> ed
Wrote file afiedt.buf

  1  with t(location,date_place) as (
  2  select 'Москва',date '2018-02-01' from dual union all
  3  select 'Москва',date '2018-02-02' from dual union all
  4  select 'Москва',date '2018-02-03' from dual union all
  5  select 'Ізмайлово',date '2018-02-04' from dual union all
  6  select 'Ізмайлово',date '2018-02-05' from dual union all
  7  select 'Львів',date '2018-02-06' from dual union all
  8  select 'Москва',date '2018-02-07' from dual union all
  9  select 'Москва',date '2018-02-08' from dual union all
 10  select 'Москва',date '2018-02-09' from dual union all
 11  select 'Москва',date '2018-02-10' from dual union all
 12  select 'Неізвестное',date '2018-02-11' from dual union all
 13  select 'Неізвестное',date '2018-02-12' from dual union all
 14  select 'Ізмайлово',date '2018-02-13' from dual)
 15  , tt as (
 16  select t.*
 17  ,row_number() over(order by date_place) -
 18   row_number() over( partition by location order by date_place) gr
 19  ,row_number() over( partition by location order by date_place) r2
 20  ,row_number() over(order by date_place) r
 21   from t)
 22  select
 23   location,min(date_place) min_dat,max(date_place) max_dat
 24  from tt
 25  group by location,gr
 26* order by 2
SQL> /

LOCATION    MIN_DAT  MAX_DAT
----------- -------- --------
Москва      01.02.18 03.02.18
Ізмайлово   04.02.18 05.02.18
Львів       06.02.18 06.02.18
Москва      07.02.18 10.02.18
Неізвестное 11.02.18 12.02.18
Ізмайлово   13.02.18 13.02.18

6 rows selected.


....
stax
...
Рейтинг: 0 / 0
03.04.2018, 11:55
    #39624629
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Групировать срочки используя partition
Stax,
Еще один любитель забивать гвозди отверткой....
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Групировать срочки используя partition / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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