У меня есть две таблицы измерений и одна таблица фактов следующим образом:звезда вопрос агрегации схемы
drop table if exists ref;
create table ref (country_id int not null, id_ref int not null);
insert into ref values(1,1);
insert into ref values(1,2);
drop table if exists conv;
create table conv (country_id int not null, id_ref int not null,id_conv int not null,item varchar(25));
insert into conv values (1,1,1,'AA');
insert into conv values (1,2,2,'CC');
insert into conv values(1,2,3,'CA');
insert into conv values(1,2,4,'CA');
drop table if exists fact;
create table fact as
select
r.country_id,c.item,
count(distinct r.id_ref) refs,
count(distinct c.id_conv) convs
from ref r
left join conv c
on r.country_id=c.country_id
and r.id_ref=c.id_ref
group by 1,2;
запрос, чтобы получить результаты:
select f.country_id, sum(f.refs) refs,sum(f.convs) convs
from fact f
group by 1;
Результат выше запроса является 1,3,4
, но я ожидал 1,2,4
Как гр я достигаю ожидаемых результатов, или мои понятия ошибочны?
Можете ли вы объяснить, почему вы ожидаете 1,2,4? У вашей таблицы фактов явно есть 3 результата для ссылок, сумма которых будет равна 3 ... Зачем вам нужно группировать по элементам вообще - не будет ли это работать (получается 1,2,4): http: // sqlfiddle. com/#! 2/22d3e8/3 – sgeddes
, потому что таблица ref имеет только две строки, поэтому, если я их подсчитаю, я должен получить 2 как счет id_ref – Developer