Проблема в следующем: Необходимо найти сумму значений в поле БД всех ячеек принадлежащих к определенным атрибутам(т.е для массива атрибутов создается ячейка или множество ячеек - записи в БД), при это есть связь 1:M таблицы "Ячеек" и таблица "Занятия ячейки" т.е зная id ячейки мы можем несколько раз сделать запись и на основе этого рассчитать сколько ячеек всего, сколько занято и сколько доступно.
Сейчас запрос выглядит следующим образом:
select
s.id as Id,
sa.id_attribute as IdAtr,
sum(a.limit) as All,
sum(case when c.status_active = false then 1 else 0 end) as Fact,
sum(a.limit) - sum(case when c.status_active = false then 1 else 0 end) as Access
from public."schedule" as s
left join public."schedule_attribute" as sa on sa.id_schedule = s.id
left join public."access_cell" as a on a.id__attribute = sa.id
left join public."closed_cell" as c on c.id_access_cell = a.id
group by
s.id,
sa.id_attribute
Проблема в том, что если в свободную ячейку мы ссылаем один раз в таблицу closed_cell все хорошо, но если несколько раз, то сумма высчитывается не корректно, возрастая в зависимости от значения в поле limit таблицы access_cell.