рассчитывать на одну и ту же таблицу дважды - PullRequest
1 голос
/ 15 января 2020

У меня есть следующая таблица

enter image description here

Я хочу рассчитать количество транзакций в месяц и добавить еще один столбец для общего количества в месяц

Результат должен выглядеть следующим образом:

enter image description here

Я пробую следующий код:

select  aa.date , aa.department , count(aa.trans_id) "COUNT PER DEPARTMENT"  
, ( select count(trans_id) from table bb where aa.date = bb.date groub by date ) overallcount
from table aa
group by aa.date , aa.department

этот код не работает занимает много времени, я думаю, что-то не так с этим.

Ответы [ 3 ]

1 голос
/ 15 января 2020

Вы можете использовать analytical function с ключевым словом distinct следующим образом:

Select distinct date, department,
       Count(1) over (partition by date, department) as count_per_department,
       Count(1) over (partition by date) as overallcount
  From aa;

Cheers !!

1 голос
/ 15 января 2020

Просто используйте агрегацию и оконные функции:

select date, department,
       count(*) as department_cnt,
       sum(count(*)) over (partition by date) as month_cnt
from t
group by date, department;
1 голос
/ 15 января 2020

Можете ли вы попробовать это-

select  aa.date , 
aa.department,
count(aa.trans_id) "COUNT PER DEPARTMENT",
max(bb.overall) overall
from table aa
inner join (
    select date,
    count(trans_id) overall
    from table
    group by date
)bb ON aa.date = bb.date
group by aa.date , aa.department
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...