Я пытаюсь подсчитать данные из разных таблиц в определенные даты, но по какой-то причине я получаю неправильный результат, он просто дублирует счет из другой таблицы.
Если вы посмотрите, то вВ таблице «Предметы» только 1 запись.Но при подсчете через count () я получаю 5.
Можете ли вы объяснить и помочь мне решить эту проблему?
Данные:
create table views(id bigint, created_at timestamp);
create table items(id bigint, created_at timestamp);
insert into views(id, created_at) values
('1', '2018-12-28 22:46:35'),
('2', '2018-12-28 22:46:35'),
('3', '2018-12-28 22:46:35'),
('4', '2018-12-28 22:46:35'),
('5', '2018-12-28 22:46:35');
insert into items(id, created_at) values
('1', '2018-12-28 22:46:35');
Запрос:
select
dates.d as day,
count(v.*) as views_count,
count(i.*) as items_count
from (
select d from generate_series('2018-12-01'::date, '2018-12-30', '1 day' ) as d
) as dates
left join views as v on v.created_at::date = dates.d
left join items as i on i.created_at::date = dates.d
group by day order by day desc;
DbFiddle.