powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли такое с помощью SQL?
15 сообщений из 40, страница 2 из 2
Возможно ли такое с помощью SQL?
    #33902746
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
danilov_voЗЫ: подойдет любая информация, линки..
Заранее спасибо..
вот еще ЛЮБАЯ сцылка
......
stax
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #33902777
RRA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. формулировка задачи не совсем понятна, но так как тема интересная предлагаю свой вариант:

Код: plaintext
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.
Select
  *
From
(  
Select
  B1.N_Min,
  B2.N_Max
From  
  (Select
    Min(N) Over (Partition By 1) As Min,
    N As N_Min 
  From  
   (Select Level As N From Dual Connect By Level<=500) A1
  Where 
    A1.N between 100 And 300  
  Order By N) B1,
  ---------------------------------  
  (Select
    Max(N) Over (Partition By 1) As Max,
    N As N_Max 
  From  
   (Select Level As N From Dual Connect By Level<=500) A1
  Where 
    A1.N between 100 And 300    
  Order By N Desc) B2
Where
  B1.N_Min+B2.N_Max Between B1.Min And B2.Max
Order By B1.N_Min+B2.N_Max desc
)
Where RowNum<=5    
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #33902801
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем приводившим ссылки сорри - сходить не мог, поэтому решения приводить не стану, но, прикола ради:
Код: plaintext
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.
SQL> var s_from number;
SQL> var s_to number;
SQL> exec :s_from :=  601 ; :s_to :=  650 ;

PL/SQL procedure successfully completed
s_from
---------
 601 
s_to
---------
 650 

SQL> with tab as (
   2   select  550  val from dual union all
   3   select  450  from dual union all
   4   select  350  from dual union all
   5   select  250  from dual union all
   6   select  151  from dual)
   7   select *
   8   from (select val, summ, dense_rank() over(order by r) R
   9          from (select val, sum(val) over(partition by r) summ, r
  10                 from (select val,
  11                               power( 2 , (row_number() over(order by val desc) -  1 )) rn
  12                        from tab) t,
  13                      (select rownum r from dual connect by level <  100 ) p
  14                 where bitand(rn, r) >  0 )
  15          where summ between :s_from and :s_to)
  16   where R =  1 ;

       VAL       SUMM          R
---------- ---------- ----------
        450          601            1 
        151          601            1 
s_from
---------
 601 
s_to
---------
 650 

SQL> 
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #33902855
RRA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
Create View Тест As
  select 550 As N from dual union all
  select 450 As N from dual union all
  select 350 As N from dual union all
  select 250 As N from dual union all
  select 151 As N from dual;
-----------------------------------------
Select 
  *
From
 (Select
    B1.N_Min,
    B2.N_Max
  From  
    (Select
      Min(N) Over (Partition By 1) As Min,
      N As N_Min 
    From  
      Тест A1
    Order By N) B1,
    ---------------------------------  
    (Select
      Max(N) Over (Partition By 1) As Max,
      N As N_Max 
    From  
      Тест A1
    Order By N Desc) B2
  Where
    B1.N_Min+B2.N_Max Between 601 And 650
  Order By B1.N_Min+B2.N_Max desc)
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #33906292
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RRA
Код: plaintext
1.
2.
  Where
    B1.N_Min+B2.N_Max Between  601  And  650 
Твоё мировоззрение ограничено только двумя слагаемыми?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Возможно ли такое с помощью SQL?
    #39633427
Zahar H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WITH x AS (
SELECT ROWNUM*100 n
FROM dual
CONNECT BY LEVEL<=4
), y(str, sm, lvl) AS (
SELECT TO_CHAR(MAX(n)), MAX(n), 1
FROM x
WHERE n <= 650
UNION ALL
SELECT y.str || ',' || x.n, y.sm+x.n, y.lvl+1
FROM x, y
WHERE NOT ',' || y.str || ',' LIKE '%,' || n || ',%'
AND y.sm+x.n <=650 AND y.sm<600
)
SELECT MAX(str) KEEP(DENSE_RANK FIRST ORDER BY lvl DESC, sm DESC) str
FROM y
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633428
Zahar H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to be more accurate:

WITH x AS (
select 550 As N from dual union all
select 450 As N from dual union all
select 350 As N from dual union all
select 250 As N from dual union all
select 151 As N from dual
), y(str, sm, lvl) AS (
SELECT TO_CHAR(n), n, 1
FROM x
WHERE n <= 650
UNION ALL
SELECT y.str || ',' || x.n, y.sm+x.n, y.lvl+1
FROM x, y
WHERE NOT ',' || y.str || ',' LIKE '%,' || n || ',%'
AND y.sm+x.n <=650 AND y.sm<600
)
SELECT MAX(str) KEEP(DENSE_RANK FIRST ORDER BY lvl DESC, sm DESC) str
FROM y

this gives:

STR
------
450,151

Is that what you needed?
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633431
Zahar H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
This one is a bit better:

WITH x AS (
select 550 As N from dual union all
select 450 As N from dual union all
select 350 As N from dual union all
select 250 As N from dual union all
select 151 As N from dual
), y(str, sm, lvl) AS (
SELECT TO_CHAR(n), n, 1
FROM x
WHERE n <= 650
UNION ALL
SELECT y.str || ',' || x.n, y.sm+x.n, y.lvl+1
FROM x, y
WHERE NOT ',' || y.str || ',' LIKE '%,' || n || ',%'
AND y.sm+x.n <=650 AND y.sm<600
)
SELECT MAX(str) KEEP(DENSE_RANK FIRST ORDER BY lvl, sm DESC) str
FROM y
WHERE sm>=600
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633433
Zahar H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yet one more (optimized) version:

WITH x AS (
select 550 As N from dual union all
select 450 As N from dual union all
select 350 As N from dual union all
select 250 As N from dual union all
select 151 As N from dual
), y(str, sm, lvl, prev) AS (
SELECT TO_CHAR(n), n, 1, n
FROM x
WHERE n <= 650
UNION ALL
SELECT y.str || ',' || x.n, y.sm+x.n, y.lvl+1, x.n
FROM x, y
WHERE NOT ',' || y.str || ',' LIKE '%,' || n || ',%'
AND y.sm+x.n <=650 AND y.sm<600
AND x.n<y.prev
)
SELECT MAX(str) KEEP(DENSE_RANK FIRST ORDER BY lvl, sm DESC) str
FROM y
WHERE sm>=600
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633490
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
WITH x AS (
SELECT ROWNUM n FROM dual
connect BY ROWNUM < 501
),
 y(str, sm, lvl, PREV) AS (
SELECT TO_CHAR(n), n, 1, n
FROM x
WHERE n <= 650
UNION ALL
SELECT y.str || ',' || x.n, y.sm+x.n, y.lvl+1, x.n
FROM x, y
WHERE NOT ',' || y.str || ',' LIKE '%,' || n || ',%'
AND y.sm+x.n <=650 AND y.sm<600
AND x.n<y.prev
)
SELECT MAX(str) KEEP(DENSE_RANK FIRST ORDER BY lvl, sm DESC) str
FROM y
WHERE sm>=600


ORA-01652: невозможно увеличить временный сегмент до 128 в разделе TEMP
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633491
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zahar H.Is that what you needed?Янки, как у тебя с логикой и ощущением своевременности?
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633642
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__vvp_,
Нужно найти сочетания строк, может стоит сначала объединить, посчитать суммы и после фильтровать?
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633673
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLer__vvp_,
Нужно найти сочетания строк, может стоит сначала объединить, посчитать суммы и после фильтровать?сколько это будет комбинаций для 500 исходных строк?
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633738
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,
много. пугает?
...
Рейтинг: 0 / 0
Возможно ли такое с помощью SQL?
    #39633757
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxXMLer__vvp_,
Нужно найти сочетания строк, может стоит сначала объединить, посчитать суммы и после фильтровать?сколько это будет комбинаций для 500 исходных строк?
Код: plaintext
3 273 390 607 896 141 870 013 189 696 827 599 152 216 642 046 043 064 789 483 291 368 096 133 796 404 674 554 883 270 092 325 904 157 150 886 684 127 560 071 009 217 256 545 885 393 053 328 527 589 375
Ты столько же насчитал?
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли такое с помощью SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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