общий итог с количеством раз и числовым - PullRequest
0 голосов
/ 12 апреля 2019

Я должен добавить общую сумму для всех трех столбцов для запроса ниже.Второй и третий столбцы являются числовыми, так что их легко легко получить.Тем не менее, я также хочу добавить итог в первом столбце: добавить номер идентификатора компьютера.Есть ли что сделать для этого?Спасибо!!

  SQL> select comp_id, count(loan_id) "num_computer", count(st_id) "st_num"
      2  from computer left join loan using (comp_id)
      3    left join student using (st_id)
      4  group by grouping sets ((),comp_id)
      5  ;

COMP_ num_computer     st_num
----- ------------ ----------
1001             2          2
1002             0          0
1003             2          2
1004             0          0
1005             0          0
1006             1          1
1007             3          3
1008             1          1
1009             0          0
1010             1          1
                10         10

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Я думаю, что самый простой способ - добавить еще один столбец:

select comp_id, sum(1) as cnt, count(loan_id) "num_computer", count(st_id) "st_num"
from computer left join
     loan
     using (comp_id) left join
     student
     using (st_id)
group by grouping sets ((comp_id), ());

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

0 голосов
/ 12 апреля 2019

Вы можете попробовать это:

select   
  CASE
      WHEN GROUPING(comp_id) = 1 THEN count(comp_id) ELSE comp_id END  comp_id, 
  count(loan_id) "num_computer", 
  count(st_id) "st_num"
from computer left join loan using (comp_id)
left join student using (st_id)
group by grouping sets ((comp_id), ());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...