powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Хитрое суммирование
20 сообщений из 20, страница 1 из 1
Хитрое суммирование
    #39321784
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, есть примерно следующий набор данных и запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select sum(max(plan)) from (          
select     45893 as id_tutor ,	50082	as id_learner,'Должность' as name ,	 1 as plan from dual
union all
select     45893 as id_tutor ,	82373	as id_learner,	'Должность' as name , 4 as plan from dual
union all
select     45893 as id_tutor ,	85201	as id_learner,	'Должность' as name , 4 as plan from dual
union all
select     45893 as id_tutor ,	85201	as id_learner,	'Должность' as name , 4 as plan from dual
) group by id_tutor,id_learner



Возвращает он абсолютно верный результат - 9.
Можно ли реализовать такой же результат исключая группировку по id_learner ???

Спасибо
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321789
Кэп 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,

Код: 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.
select sum(plan)-4
  from (select 45893 as id_tutor,
               50082 as id_learner,
               'Должность' as name,
               1 as plan
          from dual
        union all
        select 45893 as id_tutor,
               82373 as id_learner,
               'Должность' as name,
               4 as plan
          from dual
        union all
        select 45893 as id_tutor,
               85201 as id_learner,
               'Должность' as name,
               4 as plan
          from dual
        union all
        select 45893 as id_tutor,
               85201 as id_learner,
               'Должность' as name,
               4 as plan
          from dual)
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321792
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кэп 2, ник соответствует
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321795
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artas,

Можно вообще без group by.
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321807
Теща кэпа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artasКэп 2, ник соответствует

Вы лучше расскажите, что вы хотите, чуть более распространенно, чем "хочу 9"
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321816
Теща кэпа,

сумма по дистинкту ид. типичная задача для денормализованных данных. решается через поданалитику или пользовательский агрегат.
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321818
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теща кэпа,

Код: plaintext
select sum(plan) from (select distinct ...)
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321832
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

спасибо, решение подзапросами только на крайний случай
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321840
artasdbms_photoshop,

спасибо, решение подзапросами только на крайний случайс чем связаны подзапросо и группо фобии?
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321989
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artas,

скорее в качестве шютки (если подойдет добавить to_char)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  1  select trunc(sum(distinct plan||',00000'||id_tutor||id_learner)) sss from (
  2  select     45893 as id_tutor ,     50082   as id_learner,'Должность' as name ,      1 as plan from dual
  3  union all
  4  select     45893 as id_tutor ,     82373   as id_learner,  'Должность' as name , 4 as plan from dual
  5  union all
  6  select     45893 as id_tutor ,     85201   as id_learner,  'Должность' as name , 4 as plan from dual
  7  union all
  8  select     45893 as id_tutor ,     85201   as id_learner,  'Должность' as name , 4 as plan from dual
  9  )
 10* --group by id_tutor,id_learner
SQL> /

       SSS
----------
         9



.....
stax
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39321993
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на крайнюю плоть,

нет, с тем что это выборка получаеться из довольно грузного подзапроса +, наверное все-же до конца правильно дал задание, т.к. упростил до минимума

вот такой идеал данных, с условием без группировки по id_learner

id_tutor id_learner plan
45893 50082 9
45893 82373 9
45893 85201 9
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322033
artas,

приведенные строки это конкурс я разгадаю алгоритм с трех строк результата?
подходит обычный sum over поверх group by.
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322140
artas1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конечный автомат ЧЯ,

ну, если дословно описать то получаеться сумма планов по дистинкт id_tutor
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322196
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasна крайнюю плоть,

нет, с тем что это выборка получаеться из довольно грузного подзапроса +, наверное все-же до конца правильно дал задание, т.к. упростил до минимума

вот такой идеал данных, с условием без группировки по id_learner

id_tutor id_learner plan
45893 50082 9
45893 82373 9
45893 85201 9


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  1  select distinct
  2  id_tutor,id_learner,trunc(sum(distinct plan||',00000'||id_learner) over (partition by id_tutor)) sss
  3   from (
  4  select     45893 as id_tutor ,     50082   as id_learner,'Должность' as name ,      1 as plan from dua
  5  union all
  6  select     45893 as id_tutor ,     82373   as id_learner,  'Должность' as name , 4 as plan from dual
  7  union all
  8  select     45893 as id_tutor ,     85201   as id_learner,  'Должность' as name , 4 as plan from dual
  9  union all
 10  select     45893 as id_tutor ,     85201   as id_learner,  'Должность' as name , 4 as plan from dual
 11  )
 12* --group by id_tutor,id_learner
SQL> /

  ID_TUTOR ID_LEARNER        SSS
---------- ---------- ----------
     45893      85201          9
     45893      82373          9
     45893      50082          9



.....
stax
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322204
artas1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

Гениально, спасибо большое
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322228
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artas1Гениально, спасибо большое
Ну да, ну да...
Полагаете, уважаемый stax.. смайлик рисовал просто от хорошего настроения?
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322272
grreens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas1,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select id_tutor,id_learner, sum(plan) over () from (          
select     45893 as id_tutor ,	50082	as id_learner,'Должность' as name ,	 1 as plan from dual
union all
select     45893 as id_tutor ,	82373	as id_learner,	'Должность' as name , 4 as plan from dual
union all
select     45893 as id_tutor ,	85201	as id_learner,	'Должность' as name , 4 as plan from dual
union all
select     45893 as id_tutor ,	85201	as id_learner,	'Должность' as name , 4 as plan from dual
) group by id_tutor,id_learner, plan
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322274
grreens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grreens,

select id_tutor,id_learner, sum(plan) over (partition by id_tutor) from (
select 45893 as id_tutor , 50082 as id_learner,'Должность' as name , 1 as plan from dual
union all
select 45893 as id_tutor , 82373 as id_learner, 'Должность' as name , 4 as plan from dual
union all
select 45893 as id_tutor , 85201 as id_learner, 'Должность' as name , 4 as plan from dual
union all
select 45893 as id_tutor , 85201 as id_learner, 'Должность' as name , 4 as plan from dual
) group by id_tutor,id_learner, plan
...
Рейтинг: 0 / 0
Хитрое суммирование
    #39322496
artas1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grreens,

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


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