Нужна логика Hana SQL - PullRequest
       12

Нужна логика Hana SQL

0 голосов
/ 17 декабря 2018
select  groupid,count(value) as x
from test_distinct_count
group by rollup (groupid);

Этот запрос дает вывод, например:

enter image description here

Что мне нужно, это отобразить значение 5 для всех groupids в столбце сказатьВсего.Примерно так:

enter image description here

как этого можно добиться с помощью Hana Sql.

Ответы [ 4 ]

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

Сначала выполните оконную функцию, затем накопительный пакет:

select groupid, count(value), max(total) as total
from (select groupid, value,
             sum(case when value is not null then 1 end) over () as total
      from test_distinct_count
      group by groupid
     ) t
group by rollup (groupid);

Это безопаснее, если вы хотите добавить больше столбцов в group by.

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

Am от sql server background надеюсь, что sum () over () будет существовать в Hana, попробуйте следующее решение

create table #temp(groupid int,value int)

insert into #temp values(1,1)
insert into #temp values(1,1)
insert into #temp values(1,1)
insert into #temp values(2,2)
insert into #temp values(2,2)

select 
a.*,sum(x) over()/2 as Total
from (
select  groupid,count(value) as x
from #temp
group by rollup (groupid)
)a
0 голосов
/ 17 декабря 2018

создать таблицу #temp (groupid int, value int)

вставить в значения #temp (1,1) вставить в значения #temp (1,1) вставить в значения #temp (1,1)вставить в значения #temp (2,2) вставить в значения #temp (2,2)

select * from (выберите groupid, count (value) как x из #temp group по свертке (groupid)) aперекрестное применение (выберите количество (значение) как итоговое значение из #temp) b

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

Один из вариантов будет следующим:

with grp as ( select  groupid, count(value) as x
              from test_distinct_count
              group by rollup (groupid) ),
     cnt as ( select count(value) as total from test_distinct_count )
select grp.groupid, grp.x, cnt.total from grp cross join cnt;
...