powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Group
12 сообщений из 12, страница 1 из 1
Group
    #39390100
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица
Код: plsql
1.
Data Time


Как сгруппировать таблицу

Код: plsql
1.
Data, Min(Time),  Time as Second



Чтоб в Second входило второе значение (не min, не max, а второе если отсортировать time по возрастанию) если count(*)>1
...
Рейтинг: 0 / 0
Group
    #39390105
Кто тут?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=Koba=-, А?
...
Рейтинг: 0 / 0
Group
    #39390111
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

никак не группировать, потому ,что анализировать
...
Рейтинг: 0 / 0
Group
    #39390113
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish,

Сделал внутреннюю группировку с
ROW_NUMBER () OVER (ORDER BY OPERATION_TIME) AS ROWN

Во внешней с HAVING по Count & RowN

Если есть советы, приветствую =)
...
Рейтинг: 0 / 0
Group
    #39390117
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

читайте документацию там всё (и это) есть
...
Рейтинг: 0 / 0
Group
    #39390120
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish-=Koba=-,

читайте документацию там всё (и это) есть
Лаконично
...
Рейтинг: 0 / 0
Group
    #39390133
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-orawish,

Сделал внутреннюю группировку с
ROW_NUMBER () OVER (ORDER BY OPERATION_TIME) AS ROWN

Во внешней с HAVING по Count & RowN

Если есть советы, приветствую =)

Неа мой вариант не прокатил((
...
Рейтинг: 0 / 0
Group
    #39390137
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Неа мой вариант не прокатил((Чудило, http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Group
    #39390144
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  1  with t as (
  2  select sysdate d from dual union all
  3  select sysdate+1/24/5 from dual union all
  4  select sysdate+1/24/3  from dual union all
  5  select sysdate+1/24/2  from dual union all
  6  select sysdate+1/24/1+1  from dual
  7  )
  8  ,tt as (select d, min(d) over (partition by trunc(d)) dm from t )
  9  --
 10  select
 11   trunc(d) dat
 12  ,to_char(min(d),'hh24:mi:ss') ti
 13  ,to_char(nvl(min(decode(d,dm,cast(null as date),d)),min(d)),'hh24:mi:ss') ti2
 14  from tt group by trunc(d)
 15* order by 1
SQL> /

DAT      TI       TI2
-------- -------- --------
24.01.17 10:43:43 10:55:43
25.01.17 11:43:43 11:43:43



.....
stax
...
Рейтинг: 0 / 0
Group
    #39390377
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Есть таблица
Код: plsql
1.
Data Time


Как сгруппировать таблицу

Код: plsql
1.
Data, Min(Time),  Time as Second



Чтоб в Second входило второе значение (не min, не max, а второе если отсортировать time по возрастанию) если count(*)>1Групповые функции работают с множествами и не учитывают порядок элементов в группе, так что придется прикрутить аналитику.
Код: plsql
1.
create table t as select rownum id, column_value value from table(sys.odcinumberlist(1,1000,99,7,50,13));


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select t.*, max(decode(drnk, 2, value)) over () second0
  from (select id,
               value,
               min(value) over () mi,
               max(value) over () ma,
               nth_value(value, 2) over (order by value rows between unbounded preceding and unbounded following) second,
               dense_rank() over (order by value) drnk
          from t
        order by id) t;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        ID      VALUE         MI         MA     SECOND       DRNK    SECOND0
---------- ---------- ---------- ---------- ---------- ---------- ----------
         1          1          1       1000          7          1          7
         2       1000          1       1000          7          6          7
         3         99          1       1000          7          5          7
         4          7          1       1000          7          2          7
         5         50          1       1000          7          4          7
         6         13          1       1000          7          3          7

6 rows selected.

Или если надо "схлопнуть"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select max(second) second, max(decode(drnk, 2, value)) second0
  from (select id,
               value,
               min(value) over () mi,
               max(value) over () ma,
               nth_value(value, 2) over (order by value rows between unbounded preceding and unbounded following) second,
               dense_rank() over (order by value) drnk
          from t
        order by id) t;


Код: plaintext
1.
2.
3.
    SECOND    SECOND0
---------- ----------
         7          7
1 row selected.

Единственное исключение для групповых функций - listagg. В ней может быть учтен порядок, и если группы небольшие и с уникальными элементами, то можно использовать следующее.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select regexp_substr(str, '[^|]+', 1, 1) x1,
       regexp_substr(str, '[^|]+', 1, 2) x2,
       regexp_substr(str, '[^|]+', 1, 3) x3,
       regexp_substr(str, '[^|]+', 1, 4) x4,
       regexp_substr(str, '[^|]+', 1, 5) x5,
       regexp_substr(str, '[^|]+', 1, 6) x6,
       regexp_substr(str, '[^|]+', 1, 7) x7                                   
  from (select listagg(value, '|') within group (order by value) str from t);


Код: plaintext
1.
2.
3.
X1    X2    X3    X4    X5    X6    X7   
----- ----- ----- ----- ----- ----- -----
1     7     13    50    99    1000       
1 row selected.
...
Рейтинг: 0 / 0
Group
    #39392640
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за разъяснение
...
Рейтинг: 0 / 0
Group
    #39392685
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopГрупповые функции работают с множествами и не учитывают порядок элементов в группе, так что придется прикрутить аналитику.
...
Единственное исключение для групповых функций - listagg.
COLLECT и XMLAGG же еще могут сортировать, как минимум ( JSON_ARRAYAGG в 12.2).
Код: 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.
SQL> with t(id,value) as (
  2    select rownum,
  3  	      xmlcast(column_value as int)
  4  	 from xmltable('1,1000,99,7,50,13'))
  5  select xmlcast(
  6  	      xmlquery(
  7  		'/e[2]/text()'
  8  		passing xmlagg(xmlelement("e", value) order by value)
  9  		returning content)
 10  	      as int) n_value
 11    from t
 12  /

   N_VALUE
----------
	 7

SQL> with t(id,value) as (
  2    select rownum,
  3  	      xmlcast(column_value as int)
  4  	 from xmltable('1,1000,99,7,50,13'))
  5  select collect(value order by value) vals
  6    from t
  7  /

VALS
--------------------------------------------------------------------------------
SYSTPRw28QEgmPPbgVAAUT/seRQ==(1, 7, 13, 50, 99, 1000)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Group
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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