Сумма счета в Oracle - PullRequest
       18

Сумма счета в Oracle

0 голосов
/ 15 ноября 2018

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

select job_id, SUM(count(job_id)) as "jobs" 
from employees 
group by job_id

ошибка:

ORA-00937: нет функции для одной группы

Iтакже пытался использовать cte, но, к моему удивлению, я не могу:

with cte1 as (
  select job_id, count(job_id) as "jobs" 
  from employees 
  group by job_id
)
select sum(jobs) from cte1

ORA-00904: "JOBS": неверный идентификатор

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вы можете вкладывать агрегаты.Но вам нужно удалить столбцы, по которым вы группируете, из списка выбора:

select sum(count(*)) as "jobs" 
from   hr.employees 
group  by job_id;

jobs   
   107 

Это количество строк для каждого задания.И затем подводит итоги.

То же самое, что и:

with jobs as ( 
  select count(*) c
  from   hr.employees 
  group  by job_id
)
  select sum ( c ) from jobs;

SUM(C)   
     107 

Ваш CTE не работает, потому что вы указали "задания".Это делает его строчным идентификатором, к которому нужно обращаться в кавычках для доступа:

with cte1 as(
  select job_id,
         count( job_id ) as "jobs"
  from   hr.employees
  group by job_id
)
  select sum( "jobs" )
  from   cte1;

SUM("JOBS")   
          107
0 голосов
/ 15 ноября 2018

вам не нужна избыточная сумма, у вас уже есть количество строк на job_id:

select job_id, count(job_id) as "jobs" from employees group by job_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...