Как вы делаете сделать подгруппу по запросу? - PullRequest
0 голосов
/ 14 декабря 2018

Извините за смутный вопрос.Я просто не знал, как объяснить в сжатой форме.

Я пытаюсь выполнить запрос, который группирует job_modules по идентификатору задания.Проблема в том, что в таблице много job_dis и много job_modules в одном job_id.Я просто не знаю, как сделать подгруппу.

Вот как выглядит job_id.В таблице несколько job_id, но я хочу сгруппировать модули.

|job_Module_____________|AVG_REC__|JOB_ID__
|DataSelectionProcess   |0.017    |32681
|DataSelectionProcess   |0.002    |32681
|DataSelectionProcess   |0        |32681
|DataSelectionProcess   |0.015    |32681
|DataSelectionProcess   |0.004    |32681
|DataSelectionProcess   |0.009    |32681
|DataSelectionProcess   |0.002    |32681
|DataSelectionProcess   |0.791    |32681
|DataSelectionProcess   |0.001    |32681
|DataSelectionProcess   |0        |32681
|DataSelectionProcess   |0.002    |32681
|DataSelectionProcess   |2.14     |32681
|OutputFileProcess      |1.926    |32681
|OutputFileProcess      |0.044    |32681
|OutputFileProcess      |0.001    |32681
|OutputFileProcess      |0.00305  |32681
|OutputFileProcess      |0.00102  |32681
|OutputFileProcess      |0        |32681
|OutputFileProcess      |0.00609  |32681
|RecallMatchCodeProcess |44.16148 |32681

Вот ожидаемый результат: все времена avg_rec, добавленные вместе, и все модули добавлены:

|job_Module_____________|AVG_REC__|JOB_ID__
|DataSelectionProcess   |3.017    |32681
|OutputFileProcess      |2.006    |32681
|RecallMatchCodeProcess |44.16148 |32681

Вот запрос, который я пытаюсь выполнить.

Select  job_module, AVG_REC_TIME_MILLIS, job_id
        FROM job_step
        where job_id ='32681' or 
                job_id ='32687' or
                job_id ='32714' or
                job_id ='32716' or
                job_id ='32723' or
                job_id ='32743' or
                job_id ='32758' or
                job_id ='32767' or
                job_id ='32768' or
                job_id ='32782' or
                job_id ='32784' or
                job_id ='32800' or
                job_id ='32801' or
                job_id ='32849' or
                job_id ='32851' or
                job_id ='32884' or
                job_id ='32913' or
                job_id ='32928' or
                job_id ='32938' or
                job_id ='32947' or
                job_id ='33089' or
                job_id ='33095'
                group by job_module
                ORDER BY JOB_ID;

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Полагаю, AVG_REC время в секундах и миллисекундах.В этом случае вам нужно правильно суммировать время - конвертировать миллисекунды в секунды, разделив десятичную часть на 1000 и сложив с секундами.Это будет выглядеть так:

SELECT job_id, job_module, 
NUMTODSINTERVAL(SUM(
SUBSTR(avg_rec_time_millis, 1, instr(avg_rec_time_millis, '.')-1) +
(SUBSTR(avg_rec_time_millis, instr(avg_rec_time_millis, '.')+1)/1000)
)
, 'SECOND') sum_time
FROM job_step
WHERE job_id IN (
'32681', '32687', '32714', '32716', '32723','32743', '32758', '32767', '32768', '32782', '32784',
'32800', '32801', '32849', '32851','32884', '32913', '32928', '32938', '32947', '33089', '33095'
)
GROUP BY job_id, job_module;
0 голосов
/ 14 декабря 2018

Я думаю, вам нужно сгруппировать по job_id и job_module, например:

select job_id, job_module, sum(AVG_REC_TIME_MILLIS)
from job_step
where job_id in (
  '32681', '32687', '32714', '32716', '32723',
  '32743', '32758', '32767', '32768', '32782',
  '32784', '32800', '32801', '32849', '32851',
  '32884', '32913', '32928', '32938', '32947',
  '33089', '33095'
)
group by job_id, job_module
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...