Вот мой запрос и данные в таблице
посещаемость_отчет таблица:
empid | status | day
------+---------+---------
8787 | Off Day | monday
8787 | Off Day | tuesday
8788 | Off Day | wednesday
users_staffuser таблица:
id | emp_id
---+----------
1 | 8787
2 | 8788
users_staffuseroffdays таблица:
id | staff_user_id | off_days
------+---------------+--------
1 | 1 | monday
2 | 1 | tuesday
3 | 2 | Wednesday
Запрос:
select
a.empid,
count(case when a.status = 'Off Day' then 1 else 0 end) as off,
count(case when a.day = 'monday' and uso.off_days = 'monday'
then a.day
when a.day = 'tuesday' and uso.off_days = 'tuesday'
then a.day
when a.day = 'wednesday' and uso.off_days = 'wednesday'
then a.day
when a.day = 'thursday' and uso.off_days = 'thursday'
then a.day
when a.day = 'friday' and uso.off_days = 'friday'
then a.day
when a.day = 'saturday' and uso.off_days = 'saturday'
then a.day
when a.day = 'sunday' and uso.off_days = 'sunday'
then a.day
end) as off_days
from
attendance_report a
inner join
users_staffuser us on a.empid::varchar = us.emp_id
inner join
users_staffuseroffdays uso on uso.staff_user_id = us.id
where
us.emp_id is not null
and a.empid = '8787'
Мой результат запроса.потому что считать двойное значение.когда в таблице staffuseroffdays есть 1 запись пользователя, тогда показывается правильная запись
empid | off | off_days
------+------+------------
8787 | 4 | 4
8788 | 1 | 1
Мне нужен этот результат
empid | off | off_days
------+------+------------
8787 | 2 | 2
8788 | 1 | 1